我在敲头。我正在实施推送通知。一切正常(接收到推送,更新了徽章),但是在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:)
方法吗?