application:didReceiveRemoteNotification:fetchCompletionHandler:
プッシュ通知を受信した後に実行するために必要な を実装しました。「Background Fetch」と「Remote notifications」のバックグラウンド モードもオンにしました。そして、私のプッシュ通知には、content-available
に設定されたフラグが含まれてい1
ます。
アプリがアクティブ、バックグラウンド、または一時停止状態の場合、この関数が適切に呼び出され、アプリは一時的に非アクティブ状態に移行します。ただし、メモリ不足の問題が原因でアプリが一時停止状態から削除された場合 (つまり、ユーザーがアプリを起動してから他の多くのアプリを開いた場合、これはかなりよくあることです)、アプリは実行されていない状態に移行します。その時点では、didReceiveRemoteNotifications
関数は呼び出されません。
リモート通知のバックグラウンド モードを有効にした場合、システムはアプリを起動 (またはサスペンド状態からウェイクアップ) し、リモート通知が到着するとアプリをバックグラウンド状態にします。ただし、ユーザーがアプリを強制終了した場合、システムはアプリを自動的に起動しません。そのような状況では、システムがアプリを自動的に再起動しようとする前に、ユーザーはアプリを再起動するか、デバイスを再起動する必要があります。
ユーザーが強制的にアプリを終了したため、アプリがこの関数を呼び出さないシナリオは許容されます。しかし、代わりに私が見ているのは、システムがかなり一般的な理由でアプリを終了した場合、この関数は呼び出されないということです。
application:didReceiveRemoteNotification:
また、アプリが実行されていない状態のときに呼び出されるかどうかを確認するために、非推奨の関数である を実装しようとしました。そうではありません。