Mot d'avertissement
Je pense que votre application est la logique de baser comportement sur des données personnalisées dans votre notification push. Ce n'est pas ce que les notifications push sont destinés. Ce que vous devriez vous pouvez également faire sur didbecomeactive
dans votre application, c'est juste demandez à votre serveur pour les données dont vous avez besoin et a été envoyer en tant que charge utile de toute façon, et s'en servir à la place de votre charge.
Parce que la documentation indique également qu'en tant que meilleure pratique. Parce que Apple ne garantit pas que votre notification push d'être reçu 100% de temps de toute façon.
Important: la Livraison des notifications est un "best-effort", pas
de la garantie. Il n'est pas destiné à fournir des données pour votre application, uniquement pour
signaler à l'utilisateur qu'il existe de nouvelles données disponibles.
Toutefois, si vous voulez avoir une idée de savoir si, par exemple, le badge a été changé sans compter sur un utilisateur à l'ouverture de l'application en cliquant sur le badge que vous pourriez quelque chose comme ceci:
A. vous ajoutez un (bon) numéro de badge à la charge de la notification envoyée par le serveur. Par exemple pourrait ressembler à ceci:
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 9
}
}
B. vous garder une trace de ce numéro de badge de manière persistante dans votre application, par exemple en les stockant dans NSUserDefaults
.
Puis, en applicationDidBecomeActive
peut comparer l' applicationIconBadgeNumber
de la propriété de l' UIApplication
avec vos précédemment stocké à l'insigne du comte et de voir si elle a été augmentée ou diminuée, et de faire quelques mises à jour sur cette base.
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSNumber *badgecount = [[NSUserDefaults standardUserDefaults] objectForKey:@"badgecount"];
if (!badgecount) badgecount = @(0);
if ([UIApplication sharedApplication].applicationIconBadgeNumber != [badgecount integerValue]) {
//store the new badge count
badgecount = [NSNumber numberWithInteger:[UIApplication sharedApplication].applicationIconBadgeNumber];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:badgecount forKey:@"badgecount"];
[defaults synchronize];
// do some stuff here because it's different
}
}