最初の画面での認証を含み、後の画面で機密データへのアクセスを許可するアプリを書いています。ロックボタンまたはオートロックでiPhoneがロックされたら、セキュリティ対策としてアプリを閉じてほしい。これを行う方法はありますか?
4 に答える
UIApplicationDelegate は、
– applicationWillResignActive:
画面ロック時のメッセージ
– applicationDidBecomeActive:
それが戻ってくるとき。ただし、他の状況 (電話を受ける、ユーザーが iOS 4.0 以降でアプリを閉じるなど) でこれらのメッセージを受け取ることもあり、その理由を区別する方法はわかりません。
私の意見では、より良いユーザー エクスペリエンスは、アプリが戻ってきたときに認証を再度ポップアップ表示することです。これにより、携帯電話のロックが解除され、実行していたアプリが不思議なことに終了したときに、ユーザーが混乱することはありません。
混乱を解消するために、iOS 4.3.2 を搭載したデバイスでいくつかのテストを実行しました。
アプリを起動すると、アプリが送信されます: application:didFinishLaunchingWithOptions: applicationDidBecomeActive:
ホーム ボタンを押すと、アプリが送信されます。
applicationWillResignActive:
applicationDidEnterBackground:
後で同じアプリを再起動すると、アプリが送信されます。
applicationWillEnterForeground:
applicationDidBecomeActive:
ロック ボタンを押すと、アプリが送信されます。
applicationWillResignActive:
ロックを解除すると、アプリが送信されます。
applicationDidBecomeActive:
呼び出しを受けると、アプリに次のものが送信されます。
applicationWillResignActive:
その呼び出しに応答しない場合、アプリには次のものが送信されます。
applicationDidBecomeActive:
呼び出しを受けると、アプリに次のものが送信されます。
applicationWillResignActive:
その呼び出しに応答すると、アプリに次のものが送信されます。
applicationDidEnterBackground:
その電話を切ると、アプリが送信されます。
applicationWillEnterForeground:
applicationDidBecomeActive:
:を取得した場合applicationWillResignActive
は、ログアウト、認証解除、機密情報をロックまたは破棄する必要があり、取得したapplicationDidBecomeActive:
場合は再認証する必要があります。それは起動時に呼び出され、バックグラウンドから戻り、デバイスのロックを解除します。
また、これらの 2 つの方法は興味深いかもしれませんが、関心のある特定のケースにはあまり役に立ちません。
- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application
- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application
私の記憶が正しければ、電話がロックされるとアプリはスリープ状態になります。
マルチタスキングの導入以来、Apple は動作を変更して、ロック解除/切り替え時にアプリに特定のメッセージが送信されるようにしました。
そのことを聞いてから、この時点で認証を再度要求することをお勧めします。
アプリをすぐに終了できるとは思いません (また、そうすべきではありません)。自分自身を殺すだけのアプリは知りません…</p>
ここではあまり具体的でなくて申し訳ありませんが、どこに行くべきかがわかると思います…</p>
「アプリを閉じる」ことは、Apple のガイドラインに反します。一部のアプリは実際にこれを行いますが、アプリが拒否される原因の 1 つです。マルチタスキング以前は Apple のガイドラインに反していましたが、マルチタスキングのために今ではより重要になっています。ユーザー エクスペリエンスとは、ユーザーがロックされた後、または別のアプリケーションを使用していた後に電話とアプリに戻ったときのことです。アプリケーションは引き続き実行されている必要があります。「アプリを閉じる」と言うと、ユーザーはアプリがクラッシュしたと思い込み、その影響でレビューを書く可能性があります。
ユーザーが「離れた」ときにアプリ内の情報を保護したい場合は、 UIApplicationDelegate Protocol Referenceを調べる必要があります。Particualrly
applicationDidEnterBackground:
(ユーザーをログアウトする必要がある場所) とapplicationDidBecomeActive:
(ユーザーを再度ログインさせる必要がある場所)。
最後の注意として、デフォルトで「自動ログアウト」を使用することもできますが、必要に応じてログイン状態を維持する設定オプションをユーザーに提供することもできます。それほど難しいことではなく、それを望む少数の人が設定を利用できます.