2

アプリ内で機密データをユーザーに表示しています。ユーザーがホームボタンをクリックしてアプリに戻ると、Appleには、ホームボタンが押される前のデバイスの最後の画面の写真を表示するスナップショット機能があります。 。

この効果を完全に無効にする方法はありますか?ビューの上にプッシュし、ユーザーがアプリに戻ったときにスナップショットの代わりに最初に表示されるバックグラウンドアクティベーション時に画像を表示する方法をここで見てきましたが、この機能を完全に廃止して、ユーザーがアプリに再度アクセスしたときに、スナップショットやその他の画面キャプチャを保存します。誰かがこれを行う方法を提案できますか?

ホームボタン+スリープボタンを押してスクリーンショットを撮ることについて話しているのではないことに注意してください。

4

2 に答える 2

2

アプリデリゲートのapplicationWillResignActive:メソッドでは、目立たないポップアップのUIImageViewを作成できます。たとえば、アプリケーションがユーザーのパスワードを保持しているとします。誰かがユーザーの後ろを歩いていて、ユーザーがホームボタンを押しています。これは、applicationWillResignActive:おそらくマップビューを表示するメソッドを呼び出すため、ウォーカーがいなくなってユーザーがアプリケーションを再度開くと、ユーザーのパスワードの簡単なスナップショットではなく、マップビューが直接開きます。これはあなたがそれを実装する方法です:

//AppDelegate.m
- (void)applicationWillResignActive:(UIApplication *)application {

    UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"picOfMap.png"]];
    image.frame = self.view.frame;
    image.contentMode = UIViewContentModeCenter;
    [self.window.rootViewController.view addSubview: image];
}

そして、これがいつapplicationWillResignActive:呼び出されるかの説明です:

このメソッドは、アクティブ状態から非アクティブ状態に移行しようとしていることをアプリケーションに通知するために呼び出されます。これは、特定の種類の一時的な中断(電話の着信やSMSメッセージなど)の場合、またはユーザーがアプリケーションを終了してバックグラウンド状態への移行を開始した場合に発生する可能性があります。非アクティブ状態のアプリケーションは引き続き実行されますが、着信イベントをレスポンダーにディスパッチしません。(UIApplicationDelegateリファレンス

App Delegateでの作業に慣れていないため、コードにいくつかのバグがある可能性がありますが、それがあなたがすべきことの要点です。

于 2012-09-26T17:40:44.410 に答える
0

このトピックに関するAppleの技術的なQ&Aは次のとおりです。https ://developer.apple.com/library/archive/qa/qa1838/_index.html

つまり、Swiftのコードスニペットは次のとおりです。

func applicationDidEnterBackground(_ application: UIApplication) {
    let someVCToShowInAppSwitcher = ...
    window?.rootViewController?.present(someVCToShowInAppSwitcher, animated: false)
}

func applicationWillEnterForeground(_ application: UIApplication) {
    // Make sure that we'll dismiss an expected VC, e.g.:
    if window?.rootViewController?.presentedViewController?.view.accessibilityIdentifier == "someVCToShowInAppSwitcher" {
        window?.rootViewController?.dismiss(sender: self)
    }
}
于 2019-06-04T07:53:32.510 に答える