Apple Notifications Push en Vrac
J'ai une appli qui implique l'envoi de Notifications Push d'Apple à ~1M utilisateurs périodiquement. Le programme d'installation pour le faire a été construit et testé pour un petit nombre de notifications. Depuis il n'y a aucun moyen que je peux tester l'envoi à cette échelle, je suis intéressée de savoir si il ya des erreurs dans l'envoi groupé de notifications push. J'ai des scripts écrits en Python qui s'ouvrent d'une seule connexion à la push serveur et envoyer toutes les notifications sur la connexion. Apple recommande de le garder ouvert pour aussi longtemps que possible. Mais j'ai également vu que la connexion se termine et vous avez besoin de rétablir cela.
Dans l'ensemble, il est déconcertant de constater que le succès de l'envoie ne sont pas reconnus, seulement erronée ceux qui sont marqués. À partir d'un point de vue du programmeur, au lieu de simplement vérifier une chose "si (succès)" maintenant, vous avez besoin de regarder pour de nombreuses choses qui pourraient aller mal.
Ma question est: Quelle est la configuration typique d'erreurs que vous avez besoin pour regarder dehors pour s'assurer que vos messages ne sont pas en silence disparaissent dans l'oubli? La connexion de la fermeture est facile. Il y a d'autres?
- avez-vous trouver un moyen pour envoyer en masse des notification push pour les iphone? parce que je ne suis pas le trouver :/
- Si vous êtes commencer juste dehors, puis envisager de commencer avec Urban Airship, qui vous donne ~1M gratuit de pousse par mois, mais sinon incroyablement cher. Si vous avez plus de volume que cela, alors vous pouvez utiliser Amazon SNS service (qui est à quelques ordres de grandeur moins cher qu'en milieu Urbain, Dirigeable, et c'est ce que j'utilise).
- mais je suis de l'envoi de mon push gratuit donc il doit y avoir un moyen pour envoyer en masse des push aussi gratuit
Vous devez vous connecter pour publier un commentaire.
Je suis complètement d'accord avec vous que cette API est très frustrant, et si ils ont envoyé une réponse pour chaque notification, il aurait été beaucoup plus facile à mettre en œuvre.
Cela dit, voici ce qu'Apple a dire que vous devriez faire (à partir de Note Technique) :
Voulais juste carillon avec un point de vue première personne, comme nous l'envoient des millions de APNS les notifications de tous les jours.
La référence @Eran devis est malheureusement la meilleure ressource que nous avons pour la façon dont Apple gère les APNS sockets. C'est bien pour un faible volume, mais la documentation d'Apple est globalement très biaisée vers le casual, le faible volume de développeur. Vous verrez beaucoup de sans-papiers comportement une fois que vous obtenez à l'échelle.
La partie de ce document à propos de faire la détection de l'erreur asynchrone est essentiel pour le haut débit. Si vous insistez sur le blocage des erreurs sur tous les envoyer, alors vous aurez besoin d'fortement paralléliser vos travailleurs pour maintenir le débit. La méthode recommandée, cependant, est simplement d'envoyer aussi vite que vous pouvez les envoyer, et à chaque fois que vous obtenez et de l'erreur: la réparation et de relecture.
La partie de ce post, je prends exception est:
À prédicat que des conseils comme un grand "SI" semble extrêmement trompeuse. Je peux presque garantir que la plupart des développeurs ne sont pas capturer les pions et le traitement d'Apple service de réponse de 100% "correctement". Même si elles l'étaient, le système est intrinsèquement à perte, donc la dérive va arriver.
Nous voyons un nombre différent de zéro de l'erreur #8 les réponses (non valide dispositif de jeton) que j'ai attribut pour les téléphones rootés, client bogues, ou des utilisateurs intentionnellement l'usurpation de leurs jetons pour nous. Nous avons également vu un certain nombre d'erreur #7 (invalides taille de la charge utile) dans le passé, nous avons traqué à mal des messages codés qu'un développeur a ajouté sur notre fin. C'était de notre faute, bien sûr, mais c'est mon point--disant "optimiser en supposant que les défectuosités seront rares" est le mauvais message à envoyer aux développeurs de l'apprentissage. Ce que je dirais serait plutôt:
Si vous optimiser en supposant que les erreurs sont rares, vous pouvez peut-être mettre votre infrastructure à risque lors de l'APN service va vers le bas et de chaque message que vous envoyez renvoie une erreur #10.
Le problème arrive lorsque vous essayez de comprendre comment répondre correctement à des erreurs. La Documentation est ambigu ou absent sur la façon de gérer correctement et de le récupérer à partir de différentes erreurs. Ce qui est laissé comme exercice pour le lecteur, apparemment.