web-dev-qa-db-fra.com

Réception d'une notification push en double ios9

Je reçois deux fois la même notification Push dans iOS9, bien que cela fonctionne correctement sous iOS8. 

J'ai utilisé le code suivant pour m'inscrire avec les notifications Push:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
{
    // use registerUserNotificationSettings
    UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:( UIUserNotificationTypeSound | UIUserNotificationTypeAlert|UIUserNotificationTypeBadge) categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:setting];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
    // use registerForRemoteNotifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeBadge)];
}

#else

// use registerForRemoteNotifications
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

#endif
23
iPhone

J'ai eu ce problème dans plusieurs applications, et on dirait que les doublons apparaissent si vous appelez registerUserNotificationSettings: plus d'une fois.

Plus de détails dans cette réponse: https://stackoverflow.com/a/35064911/4495995

4
Vladimir K

C'est apparemment un problème Apple. J'ai rencontré le même problème plusieurs fois dans les applications. https://forums.developer.Apple.com/thread/13414

2
Gautam Jain

Depuis iOS 9, chaque fois que vous désinstallez et que vous réinstallez l’application à un nouveau jeton de périphérique, c’est peut-être pour cette raison que vous recevez plusieurs notifications Push. 

En fait, je lis sur un forum, ils fournissent la solution que lorsque vous générez une charge utile qui ajoute une valeur supplémentaire personnalisée toute valeur aléatoire afin que chaque charge utile a une valeur unique. Dans mon cas, sur vb.net, j'utilise DateTime.Now.ToString ("MMddyyyyHHmmssfff") pour ajouter un horodatage unique en millisecondes. J'espère que son travail j'ai mis en œuvre cela, mais pas testé jusqu'à présent.

2
Muhammad Ishaq

J'utilise ceci et cela fonctionne bien dans Ios9 également, veuillez l'essayer Ajoutez ceci dans votre didFinishLaunchingWithOptions:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
{
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}

La méthode d'appel est

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    self.AppDeviceToken=[token stringByReplacingOccurrencesOfString:@" " withString:@""];
}
0
hardik vyas

Commencez par vérifier votre base de données et assurez-vous que vous n'avez pas reçu le jeton de périphérique deux fois, il est fort possible que vous ayez des entrées en double du même jeton.

Deuxièmement, si vous installez/désinstallez l'application dans les 3 à 4 jours, il est possible que vous receviez la notification deux fois, voire trois fois.

Solution: Veuillez désinstaller l'application pendant une semaine, si possible, puis l'installer à nouveau.

Je vous remercie. 

0
Muhammad Ishaq