Je construis une application qui s'appuie fortement sur APN. Dès le tout premier démarrage de mon application, iOS demande si cette application est autorisée à utiliser un APN (à la suite de l'appel registerForRemoteNotificationTypes:
). Cependant, une fois rejeté, ce dialogue ne réapparaît jamais. Je dois manuellement aller à Settings->Notifications->MyApp
pour activer/désactiver des choses là-bas. Alors, y a-t-il un moyen d’éviter cette agitation et d’expérimenter ce que l’utilisateur expérimentera lors du tout premier démarrage à chaque démarrage de mon application en mode débogage?
Voici comment Apple dit vous pouvez le faire:
Réinitialisation de l'alerte d'autorisations de notifications push sur iOS
La première fois qu'une application compatible Push s'enregistre pour les notifications Push, iOS demande à l'utilisateur s'il souhaite recevoir des notifications pour cette application . Une fois que l'utilisateur a répondu à cette alerte, il n'est plus présenté sauf si le périphérique est restauré ou si l'application a été désinstallée pour à moins un jour.
Si vous souhaitez simuler une première exécution de votre application, vous pouvez quitter l'application désinstallée pendant un jour. Vous pouvez réaliser ce dernier sans attendre réellement un jour en suivant ces étapes:
Supprimer votre application de l'appareil.
Éteignez complètement l'appareil, puis rallumez-le.
Allez dans Paramètres> Général> Date et heure et définissez la date d'un jour ou plus.
Éteignez complètement l'appareil, puis rallumez-le.
Comme le temps, c'est de l'argent et que les autres méthodes prennent FOREVER - il suffit de changer votre identifiant de paquet pendant le débogage, à chaque fois que les notifications seront interrogées de nouveau. Une fois que vous êtes satisfait du code, revenez à l'ID de lot d'origine.
Sur iOS 9.x, vous pouvez obtenir l'invite chaque fois que vous supprimez et réinstallez l'application. Cela est vrai pour les téléchargements de production AppStore et le mode ad hoc. Le jeton de périphérique sera unique à chaque fois.
@chengsam a vérifié que cela est également vrai dans iOS 10 . @ WongWray a vérifié que cela est également vrai dans iOS 11.
Sur IOS10, je peux maintenant obtenir à nouveau l'invite en supprimant simplement l'application.
Actuellement, il n’existe aucun moyen programmatique d’inviter un utilisateur à accepter de nouveau les notifications Push après avoir déjà décidé de refuser.
Vous devez simplement vérifier si l'accès vous a été accordé et, le cas échéant, afficher une vue rappelant à l'utilisateur de donner manuellement l'autorisation dans les paramètres de confidentialité afin d'activer les fonctionnalités de notification Push de votre application.
Mon problème ne s’inscrivait pas pour UserNotificationSettings. Cela permettait à l'APN de fonctionner, mais pas le son d'arrière-plan ni le badge.
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
Si vous testez simplement que l'invite de notifications push s'affiche correctement, utilisez le simulateur. Tout ce que vous avez à faire est de désinstaller l'application, de la réinstaller et l'invite s'affichera à nouveau lorsque vous essayez de vous enregistrer pour les notifications Push.