环境
我正在使用react-native-push-notification,它配置有:
// top level code in index.js
PushNotification.configure({
onRegister: function (token) {
console.log('TOKEN:', token);
},
onNotification: onNotif,
senderID: '11223344556677',
permissions: {
alert: true,
badge: true,
sound: true,
},
popInitialNotification: false,
requestPermissions: true,
});
的相关部分yarn list
:
├─ react-native@0.60.5
├─ @react-native-community/push-notification-ios@1.0.2
├─ react-native-push-notification@3.1.9
│ └─ @react-native-community/push-notification-ios@^1.0.1
APNS 证书设置正确。后台获取和远程通知模式在功能页面的后台模式部分启用。
此外,如其他答案中所述,有以下didReceiveRemoteNotification
方法AppDelegate.m
:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
[RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
发送到 APNS 的消息是:
{"aps":{"alert": "Test" ,"sound":"default","content-available": 1}}
还尝试了静默有效负载{"aps":{"content-available": 1}}
和正常有效负载{"aps":{"alert": "Test" ,"sound":"default"}}
。
问题
在真实设备(iPhone 7,运行 iOS 13)上测试,当应用程序处于前台时,它正确接收到通知(没有显示实际的通知,但onNotif
被调用)。但是当应用程序在后台运行(而不是被杀死)时,onNotif
不再调用。我用嘈杂(正常)和无声(有content-available
和没有消息)有效负载进行了测试,结果是相同的。嘈杂的推送通知将出现在通知中心,但onNotif
在这两种情况下都不会调用。