6

フォアグラウンドアプリがバックグラウンドになっている場合(たとえば、ホームボタンが押された場合)、iOSがスナップショットを取得してアニメーションを開始して次の画面を表示するに、最上位のViewControllerの要素を変更するにはどうすればよいですか?

HIPAA準拠を必要とするアプリを作成しているので、このアニメーションを実行するためにOSが取得するスナップショットに、アプリが後でフォアグラウンドになったときに一瞬でも表示されない機密データが含まれていることがあるのではないかと心配しています。 。

ビューコントローラーには使用可能なライフサイクルメソッドがあることは知っていますがviewWillDisappear、コントローラーがたくさんあるので、これを処理するためにApp Delegateに何かを入れたいだけです(たとえば、不透明なフルスクリーンUIImageViewオーバーレイを追加することによって) )最後のすべてのコントローラーでこのためのカスタムコードを作成する必要はありません。

オーバーレイ生成コードをに入れてapplicationWillResignActiveみましたが、AppleのドキュメントとGoogleを調べていましたが、機能していません。アプリが画面を更新する前にスクリーンショットが撮られたのではないかと思います。

ありがとう!

4

2 に答える 2

4

バックグラウンド化に関する HIPAA の要件と、他の誰かが再開するためにユーザーをログインしたままにする可能性についてはわかりませんがUIApplicationExitsOnSuspend、ブール値YEStoを持つキーを追加するのが最も安全なようinfo.plistです。

これにより、アプリが完全にバックグラウンドになるのを防ぎ、アプリに戻るたびにアプリを再起動します (ログイン手順をトリガーする可能性があります)。

私がテストしたほとんどの (すべてではないにしても) モバイル バンキング アプリケーションは、安全上の理由からこれを行っています。

于 2012-09-25T18:50:37.970 に答える
2

答えは、背景アニメーションが始まるapplicationDidEnterBackground:に画面に表示されるものを変更することではなく、アプリが背景に入ると(つまり、アプリデリゲート内で)画面に表示されるものを変更することであると信じています。これで問題は解決しました。 。

私のUIImageViewオーバーレイのアイデアはここで機能しましたが、代わりにルートビューコントローラーにポップすることにしました。その方が簡単です。ルートビューに機密情報がありません。

外観は次のとおりです。

-(void)applicationDidEnterBackground:(UIApplication *)application {

    UINavigationController *navigationController = 
        (UINavigationController *)self.window.rootViewController;
    [navigationController popToRootViewControllerAnimated:NO];

    ...
}
于 2012-09-27T00:26:37.953 に答える