頭を叩いてる。プッシュ通知を実装しています。すべてが正常に機能しています(プッシュが受信され、バッジが更新されます)が、iOS 13.3では、アプリがバックグラウンドにあるときに、メソッドapplication(_:didReceiveRemoteNotification:fetchCompletionHandler :)が呼び出されません。アプリがフォアグラウンドにあるか、iOS 12デバイスを使用している場合、メソッドが呼び出されます。以下の方法でプッシュ通知に登録します。
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
ペイロードは次のように設定されています
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
すべてのバリエーションでアプリの機能として「リモート通知」と「バックグラウンド処理」を追加してみました(「リモート通知」/「バックグラウンド処理」のみ。これらの機能はなく、両方を有効にしています)。UNUserNotificationCenterのデリゲートを設定しましたが、成功しませんでした。それに応じてヘッダーを設定します。
curl -v \
-H 'apns-priority: 4' \
-H 'apns-topic: xx.xxxxx.xxxx' \
-H 'apns-push-type: alert' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{"aps": {"badge": 10,"alert": "test", "content-available":1}}' \
--http2 \
--cert pushcert.pem \
https://api.sandbox.push.apple.com/3/device/1234567890
ドキュメントから、アプリがバックグラウンドにあるときでも、このメソッドが呼び出されると述べています:
このメソッドを使用して、アプリの着信リモート通知を処理します。アプリがフォアグラウンドで実行されている場合にのみ呼び出されるapplication:didReceiveRemoteNotification:メソッドとは異なり、アプリがフォアグラウンドまたはバックグラウンドで実行されている場合、システムはこのメソッドを呼び出します。
iOS 13の場合、何が不足していますか?
application(_:didReceiveRemoteNotification:withCompletionHandler:)
メソッドを実装してみましたか?