Push Notifications avec PushSharp - les bases
J'ai besoin de notifications push à des dizaines de milliers d'appareils iOS qui mon application installée. Je suis en train de le faire avec PushSharp, mais je suis pas certains concepts fondamentaux ici. J'ai d'abord essayé à fait d'exécuter ce dans un service Windows, mais ne pouvait pas obtenir de travail - prise en référence null erreurs provenant de _push.QueueNotification (). Ensuite, j'ai fait exactement ce que la documentation de l'exemple de code fait et cela a fonctionné:
PushService _push = new PushService();
_push.Events.OnNotificationSendFailure += new ChannelEvents.NotificationSendFailureDelegate(Events_OnNotificationSendFailure);
_push.Events.OnNotificationSent += new ChannelEvents.NotificationSentDelegate(Events_OnNotificationSent);
var cert = File.ReadAllBytes(HttpContext.Current.Server.MapPath("..pathtokeyfile.p12"));
_push.StartApplePushService(new ApplePushChannelSettings(false, cert, "certpwd"));
AppleNotification notification = NotificationFactory.Apple()
.ForDeviceToken(deviceToken)
.WithAlert(message)
.WithSound("default")
.WithBadge(badge);
_push.QueueNotification(notification);
_push.StopAllServices(true);
Le numéro 1:
Cela fonctionne parfaitement et je vois la fenêtre de notification sur l'iPhone. Cependant, comme il est appelé un Service Push, je suppose qu'il se comporte comme un service - sens, je l'instancier et d'appel _push.StartApplePushService() au sein d'un service Windows peut-être. Et j'ai pensé à fait la queue de mes avis, je pourrais le faire sur le front-end (admin app, disons):
PushService push = new PushService();
AppleNotification notification = NotificationFactory.Apple()
.ForDeviceToken(deviceToken)
.WithAlert(message)
.WithSound("default")
.WithBadge(badge);
push.QueueNotification(notification);
Évidemment (et comme je l'ai déjà dit), il n'a pas de travail - la dernière ligne conservée lancer une référence nulle exception.
Je vais avoir du mal à trouver tout autre type de documentation, qui montrera comment configurer cela dans un service/client (et pas seulement appel tout à la fois). Est-il possible ou suis-je à côté de la question de la façon dont PushSharp devrait être utilisé?
Question #2:
Aussi, je n'arrive pas à trouver un moyen de cibler beaucoup de jetons à la fois, sans boucle, à travers eux, et la file d'attente des notifications. Est-ce la seule manière ou ai-je raté quelque chose ici?
Merci d'avance.
source d'informationauteur Kon
Vous devez vous connecter pour publier un commentaire.
@baramuse a tout expliqué, si vous souhaitez voir d'un service de "processeur", vous pouvez parcourir par le biais de ma solution sur https://github.com/vmandic/DevUG-PushSharp où j'ai mis en place le flux de travail que vous chercher, c'est à dire une victoire de service, gagner processeur ou même une api web ad hoc processeur en utilisant la même base de processeur.
De ce que j'ai lu et comment je l'utilise, le "Service" mot-clé peut avoir de vous induire en erreur...
C'est un service dans une manière que vous configurer qu'une seule fois et de le démarrer.
À partir de ce point, il va attendre pour vous de pousser les notifications de nouveau à l'intérieur de son système de file d'attente et il va déclencher des événements dès que quelque chose se passe (rapport de livraison, erreur de livraison...). Il est asynchrone et vous pouvez pousser (=file d'attente) 10000 notifications et d'attendre les résultats de revenir plus tard avec les gestionnaires d'événements.
Mais il est encore un objet régulier de l'instance, vous aurez à créer et accéder à l'ordinaire. Il n'est pas vulnérable "à l'extérieur de l'auditeur" (http/tcp/connexion ipc par exemple), vous aurez à construire.
Dans mon projet, j'ai créé un petit selfhosted webservice (s'appuyant sur la ServiceStack) qui prend garde à la configuration de l'instance et de la durée de vie tout en seulement exposer les SendNotification fonction.
Et sur la Question #2il y a, en effet, n'est pas une "file d'attente", mais comme la file d'attente de la fonction retourne tout de suite (mise en file d'attente et de pousser plus tard) c'est juste une question d'une boucle dans votre appareil jetons liste...