このトピックに関しては、stackoverflowスレッドがたくさんありますが、それでも良い解決策は見つかりませんでした。
アプリがバックグラウンドにない場合は、通知から開いたかどうかを確認するためlaunchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
にapplication:didFinishLaunchingWithOptions:
通話をチェックインできます。
アプリがバックグラウンドにある場合、すべての投稿でapplication:didReceiveRemoteNotification:
、アプリの状態を使用して確認することをお勧めします。しかし、実験的に(このAPIの名前からもわかるように)、このメソッドは、通知を受信したときにタップされずに呼び出されます。
したがって、問題は、アプリが起動されてバックグラウンドで実行され、通知が受信されたことがわかっているapplication:didReceiveNotification
(application:didFinishLaunchWithOptions:
現時点ではトリガーされない)場合、ユーザーが通知をタップするか、単にアプリアイコン?ユーザーが通知をタップした場合、その通知に記載されているページを開くことが期待されているためです。それ以外の場合は必要ありません。
handleActionWithIdentifier
カスタムアクション通知に使用できますが、これはカスタムアクションボタンがタップされたときにのみトリガーされ、ユーザーが通知の本体をタップしたときにトリガーされません。
ありがとう。
編集:
以下の回答を1つ読んだ後、このようにして質問を明確にできると思いました。
これらの2つのシナリオをどのように区別できますか?
(A)1.アプリがバックグラウンドに移行します。2.通知を受け取りました。3.ユーザーは通知をタップします。4.アプリが前面に表示される
(B)1.アプリがバックグラウンドに移行します。2.通知を受け取りました。3.ユーザーは通知を無視し、後でアプリアイコンをタップします。4.アプリが前面に表示される
application:didReceiveRemoteNotification:
どちらの場合もステップ2でトリガーされるため。
または、application:didReceiveRemoteNotification:
(A)の場合のみステップ3でトリガーする必要がありますが、どういうわけかアプリを誤って構成したため、ステップ2で表示されますか?