推送通知未在iOS 10中收到

时间:2016-09-15 06:26:41

标签: ios push-notification apple-push-notifications ios10

我的应用程序在Appstore中。推送通知在iOS 9中运行正常,但在iOS 10中无法正常工作。我没有收到iOS 10设备的任何推送通知。我检查了服务器中的设备令牌和证书。全部正确。我还在设置应用中检查了通知属性。一切都很好。但我没有收到任何通知。我只是关闭并打开我的应用程序的通知。我打开我的应用程序来检查设备令牌是否正在改变。它已更改并更新到我的服务器。然后我正在接收通知。现在它对我的设备工作正常。

我担心这是否会影响所有用户或仅影响我。有人找到合适的解决方案,请告诉我。

提前致谢

4 个答案:

答案 0 :(得分:7)

使用xCode 8 GM需要对iOS 10进行一些更改 您需要实现UserNotifications.framework及其委托方法以获取推送通知的工作。

我已使用新的UserNotifications.framework解决了我的问题。 请点击此链接:Push notification issue with iOS 10

答案 1 :(得分:6)

"的 UserNotifications "在iOS10中不是强制性的。 "的 UIUserNotificationSettings "仍然适用于iOS10。

如果您有以下代码,它应该可以在iOS10中使用。

Row13

但如果您使用 Xcode8 及更高版本进行构建,请确保在权利中包含以下条目。启用"推送通知后,将自动添加此条目"在" 功能"。

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

在发布 - 分发版本中,这将自动更改为 以下

<key>aps-environment</key>
<string>development</string>

答案 2 :(得分:3)

我们需要更改iOS 10的一些代码。

Appdelegate.h

#import <UserNotifications/UserNotifications.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate> 
@end

检查操作系统版本

#define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

注册通知

- (void)registerForRemoteNotifications {
    if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0")){
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
             if(!error){
                 [[UIApplication sharedApplication] registerForRemoteNotifications];
             }
         }];  
    }
    else {
        // Code for old versions
    }
}

亨德尔代表方法

//foreground app.
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
    NSLog(@"User Info : %@",notification.request.content.userInfo);
    completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
}

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{
    NSLog(@"User Info : %@",response.notification.request.content.userInfo);
    completionHandler();
}

答案 3 :(得分:1)

在iOS 10上添加推送通知权利是必要的,因此如果您在功能中“修复问题”,问题将自动解决。