1

我为 ios10 更新了我的应用程序,并进行了必要的更改,在 ios10 及以下版本之间分叉代码以进行正确的方法调用。

它似乎工作正常。我有一个特定的应用程序声音,告诉我远程推送已由应用程序处理,好像没有,使用默认设备声音。

安装到测试设备后,一切正常。但是有时,似乎是随机的,我在我的设备上丢失了以应用程序为中心的推送收据。我的控制台从不显示推送,因为它没有发送到手机。

我运行 IOS 控制台观看它,它似乎报告收到了“完全未知”的令牌。它适用于我的 ios10 之前的设备。

我不知道如何确定出了什么问题,因为一开始一切正常。

我现在猜测我的完成处理可能不正确并且 iOS10 正在惩罚我的应用程序?

当我得到更多线索时,我会尽可能地编辑这个问题,但目前,这很麻烦。

4

1 回答 1

0

您是否注册了推送通知?

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

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

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];
     }
 }];  
}

return YES;
}

您是否为以下委托方法实现了?

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{

//Called to let your app know which action was selected by the user for a given notification.

NSLog(@"Userinfo %@",response.notification.request.content.userInfo);

}

你能检查这个线程以获得更多线索吗

iOS 10 和 9 遵循不同的有效负载结构。

iOS 10 紧随其后

 {
        "aps":{
            "alert":{
                "body":"YOUR_MESSAGE."
            },
            "badge":1
        },
        “YOUR_VARIABLE” : "YOUR VALUE"
    }

iOS < 9 如下

{
    “aps” :     {
        “alert” : "YOUR_MESSAGE.”,
        “badge” : 1,
        “sound” : “default”
    },
    “YOUR_VARIABLE” : "YOUR VALUE"
}

我觉得这可能是问题

于 2016-10-15T03:34:54.970 回答