苹果 iOS推送 APNS(本人亲测总结)

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);

猜你喜欢

转载自blog.csdn.net/baidu_40537062/article/details/127504627