2017-12-28 12 views
2

私はAppDelegate.swiftモジュールでパスワードロックされたiOSデバイスでプッシュ通知バナーを処理する方法は?

application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 

方法

アプリケーションがアクティブであるとき、私は、アプリケーションウィンドウで自分のバナーショーでプッシュ通知を処理する:アプリケーションがバックグラウンドのiOSショーのシステムである場合には

if application.applicationState == .active { 
    // create banner 
    banner.show() 
} 

をバナーと私のアプリケーションはapplication.applicationState.backgroundという値を持つときに情報を受け取る。ユーザーがバナーアプリケーションを再度タップした場合、application.applicationState.inactiveです - この場合、通知で情報を受け取ったエンティティアイテムが開きます。

しかし、デバイスがパスワードでロックされている(つまり、コードや指紋が必要です):

  • アプリケーションユーザーがいないすぐにちょうどバックグラウンドモードと同様に、バナーをタップしなかった場合にのみ、デバイスがあるとき(通知データを受け取りますないパスワードロック)
  • ロック解除アプリケーションの状態の後には、まだある.background

どのように私はロックせずにパスワードロック解除と背景後のバックグラウンド状態に異なることができますか?

私は、スレッドの下だと思う以前の呼び出し

答えて

2

あなたはデバイスが現在あなたが背景にあることを決定するためにあなたが、その後isUnlockedapplicationStateを組み合わせて使用​​することができますUIApplication

let isUnlocked = UIApplication.shared.isProtectedDataAvailable 

isProtectedDataAvailableプロパティを使用してロックされているかどうかを識別することができますが、デバイスがロックされていることそれに応じて処理します。

isProtectedDataAvailableは、デバイスでデータ保護が有効になっていない場合(パスコードが設定されていないなど)、常にtrueを返します。

0

はあなたの問題を解決します

applicationDidBecomeActive(_ application: UIApplication) 

applicationWillEnterForeground(_ application: UIApplication) 

イベントが、

application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 

を処理することによって設定されたフラグを試してみました: How to differentiate between screen lock and home button press on iOS5?

私はそれを試していませんが、人々は完全にうまく動作し、アプリの承認プロセスに問題はないと言います。

+0

そのスレッドは、アプリケーションを残しています。そして私の質問はアプリを入力することです。ユーザーがアプリを入力する前にデバイスがパスワードロックされていたときに、私がどのような答えが異なるのかを指定できますか? –

関連する問題