appleのdocsによると、アプリケーションの状態変数が非アクティブ(link)であるかどうかをチェックすることで、ユーザの通知のタップを識別できます。通知のユーザのタップを検出する
のiOS注:iOSのでは、アプリケーションがアクションボタンをタップし、ユーザの結果として、または 通知は、アプリケーションの状態を調べる ことにより、既に実行中のアプリケーションに配信されたかどうか を立ち上げているかどうかを判断することができます。 のデリゲートの実装では、アプリケーション:didReceiveRemoteNotification:または アプリケーション:didReceiveLocalNotification:メソッドは、 applicationStateプロパティの値を取得し、評価します。値が UIApplicationStateInactiveの場合、ユーザーはアクションボタンをタップしました。 の値がUIApplicationStateActiveの場合、通知は に届いたときに最前面になりました。
しかし、私はフォアグラウンドでシステムアラート(システムアラートでは、アプリケーションのフォアグラウンドで表示されるアラートビューを意味します)があり、そのアプリケーションが非アクティブである状態(「システムアラート」が表示されている場合、アプリのapplication stateをUIApplicationStateInactiveに設定することで、iOSによってアプリが非アクティブになります)、ユーザーは引き続き画面上でアプリのコンテンツを見ることができます。下記添付ファイルをご参照ください:
をこの状態でアプリが通知を受信した場合、それは通知にタップし、ユーザーかのように動作します。このユースケースを解決するソリューションはありますか?
かなり混乱します。あなたは「フォアグラウンドのシステムアラートとアプリが非アクティブな状態にあります」とはどういう意味ですか? –
@HinataHyugaスクリーンショットでは、iOSによって制御されるシステムアラート(Gmailの通知アラート)の例があります。この時点で、iOSは非アクティブ状態(アプリのアプリケーション状態は非アクティブに設定されます)のまま、アプリを処理します。通知を受け取ったときに 'application:didReceiveLocalNotification:'メソッド呼び出しのたびに – Shashank
が呼び出されます。 – iPatel