2010-03-23 5 views
2

Je suis en train de créer une application qui utilise l'api Urban Airship pour envoyer des notifications push à l'utilisateur.Stratégie de notification push pour App utilisant le service Urban Airship (iPhone)

L'application conserve la trace des dates d'événements ajoutées à l'application par l'utilisateur. Cela signifie que je n'ai pas de serveur en place pour traiter push, l'application elle-même programme une notification push avec Urban AS lorsque l'utilisateur ajoute la date et l'heure de l'événement.

Si l'utilisateur décide de supprimer l'événement avant qu'il ne se produise, je le décompresse avec Urban AS. Tout est bon. Je, cependant, ne souhaite pas envoyer de notifications à un utilisateur qui a désactivé les notifications car ces notifications ne sont pas gratuites :)

Je sais que l'API de notification push d'Apple s'assure que l'utilisateur ne recevra aucune notification s'il les a activées désactivé dans les paramètres. Ils vont simplement ignorer les notifications programmées Urban AS envoie, ce qui est un gaspillage de bande passante et de l'argent.

Comment puis-je savoir si l'utilisateur a désactivé la notification pour mon application?

Aussi, je ne vois pas d'autre option que de tester si l'utilisateur a désactivé la notification, puis dire à Urban AS d'annuler toutes les notifications et si l'utilisateur les rallume, je vais devoir passer par tous les événements et re -scheduled les:/chaque fois que l'application s'exécute.

Quelqu'un peut-il penser à un moyen pour moi de ne pas avoir à remplir mon appDelegate avec toutes sortes de code conditionnel pour tester ces scénarios? par exemple. l'utilisateur a désactivé la poussée depuis la dernière exécution de l'application, l'utilisateur les a activés depuis la dernière fois. Je suis également préoccupé si l'utilisateur va comprendre ce comportement?

Devinez je demande juste un peu de meilleure pratique avec cette configuration push/Urban Airship :) Merci.

Répondre

1

Comme je le vois, [[UIApplication sharedApplication] enabledRemoteNotificationTypes] va retourner les types de notification que l'utilisateur a actuellement activé pour votre application.

Sinon, vous avez raison. Vous devez appeler cette méthode à chaque lancement d'application et, dans le cas où l'utilisateur a réactivé les notifications, réorganiser tous les événements que vous avez précédemment supprimés. En ce qui concerne le remplissage de votre délégué d'application avec toutes sortes de conditions, vous pouvez écrire un PushNotificationsController distinct (pas un UIViewController, juste une sous-classe NSObject) qui gérera tout ce qui concerne le push.

+0

Merci Ole. Oui, je vais sûrement le mettre dans son propre contrôleur. Je voulais simplement dire que je teste une tonne d'autres choses quand l'appDelegate reçoit le message applicationDidFinishLaunching. Je verrai si je peux imaginer quelque chose de léger qui garde la trace des préférences de push des utilisateurs du lancement au lancement et agit en conséquence. Merci encore pour votre contribution. – RickiG

Questions connexes