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 に答える