1.静默推送(发透传消息)总是收不到(iOS静默通知(iOS Silent Notification)
- 用极光测试,极光有静默推送的开关,静默推送也总是收不到
- 用下面的消息模板可以收到,但是只有app在前台的时候可以收到,APP在后台的时候收不到
// B. This works
{
aps: {
content-available: 1,
sound:“default”
}
}
参考博客:
iOS 7中的静默推送通知不起作用
2.推送的相关方法
这篇博客比较全:iOS普通推送以及静默推送奇怪的注意事项 - 简书
- 下面两个方法会被调用,上面静默推送模板发的消息也是app在前台时,在方法一中收到
// App在前台时收到普通推送 方法一
- (void)userNotificationCenter:(UNUserNotificationCenter*)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void(^)(UNNotificationPresentationOptions))completionHandler {
NSDictionary* userInfo = notification.request.content.userInfo;
NSLog(@"前台收到普通推送: %@", userInfo);
}
// App在后台时点击普通推送栏 方法二
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler {
NSDictionary* userInfo = response.notification.request.content.userInfo;
NSLog(@"后台收到普通推送: %@", userInfo);
completionHandler();
}
- 下面所谓静默推送的方法,我测试过程中没有被调用过(iOS15,xcode 13)
// App在任何状态下收到静默推送
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"收到静默推送: %@", userInfo);