アプリがインストールされているデバイスを再起動すると、アプリを再度開くと元の状態が保持されず、初めて開いたようになり、セッションが失われ、再ログインする必要があります。デバイスの再起動後もアプリの状態を保持するようにしますか? たとえば、Twitterのように。
1 に答える
上記で追加したコメントに基づいて、もう少し正式な回答を試みます。まず、Tim が投稿したリンクは、よく知っておくべきものです。
アプリの実行中は、フォアグラウンド状態です。ホームボタンでアプリを「終了」しても、実際には終了していません。バックグラウンド状態にプッシュしているだけです。バックグラウンド状態で数秒経過すると、OS はアプリを自動的に中断状態に移行します。数分以内に戻ってきた場合、アプリはまだメモリ内にあるため、OS はアプリを元の画面に戻します。
ただし、アプリをしばらく放置して他のアプリを使用すると、OS はいつでも警告なしにアプリをメモリからパージできます。これは、「実行されていない」状態として知られています。ここで、アプリを再度開くと、最初からやり直す必要があります。明らかに、デバイスの再起動時に同じことが起こります。すべてのアプリがメモリから消去されます。
秘訣は、アプリがバックグラウンド状態になるたびに、アプリの状態に関する重要な情報を保存することです。アプリ デリゲートのdidEnterBackground
メソッドを使用するか、に登録してUIApplicationDidEnterBackgroundNotification
、アクティブなビュー コントローラー (またはその他のクラス) でメソッドを呼び出すことができます。いずれにせよ、可能な限り状態情報を保存する必要があります。
この情報をどのように保存しますか? いくつかの戦略があります。単純なアプリの場合、おそらくいくつかの設定を NSUserDefaults として登録できます。または、ユーザーが作業していたデータを含むファイルを書き出すことができます。それは本当にあなた次第です。
次に、アプリが起動するたびに、その保存されたデータの存在を確認し (ただし、それを書き出すことを選択しました)、それに応じて UI をセットアップします。ユーザーには、アプリが決して終了しないように見えます。これはまさに Apple がユーザーに考えてもらいたいことです。