Push-Benachrichtigungen mit PushSharp - die Grundlagen
Brauche ich, um push-Benachrichtigungen, um Zehntausende von iOS-Geräten die app installiert. Ich bin versucht, es zu tun mit PushSharp, aber mir fehlen einige grundlegende Konzepte von hier. Zuerst habe ich versucht, tatsächlich führen diese in einem Windows-Dienst, konnte aber nicht arbeiten - erste null-Referenz-Fehler aus _push.QueueNotification () - Aufruf. Dann habe ich genau das Tat, was die dokumentierten Beispielcode hast, und es funktionierte:
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);
Ausgabe #1:
Das funktioniert perfekt und ich sehe die Benachrichtigung pop-up auf dem iPhone. Da es allerdings eine sogenannte Push-Dienst, bin ich davon ausgegangen, es würde sich Verhalten wie ein service - Bedeutung, die ich instanziieren und Aufruf _push.StartApplePushService() innerhalb einer Windows-Dienst vielleicht. Und ich dachte tatsächlich anstehen, meine Benachrichtigungen, die ich tun könnte dieses auf die front-end (admin-app, sagen wir mal):
PushService push = new PushService();
AppleNotification notification = NotificationFactory.Apple()
.ForDeviceToken(deviceToken)
.WithAlert(message)
.WithSound("default")
.WithBadge(badge);
push.QueueNotification(notification);
Offensichtlich (und wie ich bereits sagte), es hat nicht funktioniert - die Letzte Zeile warfen ein null-Verweis-Ausnahme.
Ich habe Probleme bei der Suche nach einer anderen Art von Dokumentation, die zeigen würde, wie dies im Dienst/client Art und Weise (und nicht einfach anrufen alles auf einmal). Ist es möglich oder bin ich fehlt der Punkt, wie PushSharp sollten genutzt werden?
Ausgabe #2:
Auch ich kann nicht scheinen zu finden ein Weg zum Ziel-viele Geräte-Token auf einmal, ohne die Schleife durch Sie und queuing-up-Benachrichtigungen ein zu einer Zeit. Ist das die einzige Möglichkeit oder bin ich hier etwas fehlt?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Kon | 2013-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
@baramuse alles erklärt, wenn Sie zu sehen wünschen, einen Dienst "processor" können Sie sich durch meine Lösung auf https://github.com/vmandic/DevUG-PushSharp wo habe ich umgesetzt, der workflow, die Sie suchen, D. H. eine win-service, win-Prozessor oder sogar ein web-api-ad-hoc-Prozessor mit dem gleichen Kern-Prozessor.
InformationsquelleAutor der Antwort Vedran Mandić
Von dem, was ich gelesen habe und wie verwende ich es, der 'Service' Schlüsselwort haben können in die Irre führen...
Es ist ein service in einer Weise, dass Sie konfigurieren Sie es einmal aus und starten Sie es.
Von diesem Punkt, es wird warten, bis Sie eine neue push-Benachrichtigungen in Ihrer queue-system, und es werden Ereignisse auslösen, sobald etwas passiert (delivery report, Fehler bei der Lieferung...). Es asynchron ist, und Sie können push - (=queue) 10000 Benachrichtigungen und warten, bis die Ergebnisse kommen zurück, die später mit dem event-Handler.
Aber dennoch ist es ein reguläres Objekt-Instanz, die Sie haben zu erstellen und den Zugriff als eine reguläre. Es nicht auszusetzen, "außerhalb listener" (http/tcp/ipc-Verbindung zum Beispiel), haben Sie zu bauen.
In meinem Projekt habe ich ein kleines selfhosted webservice (unter Berufung auf ServiceStack) , kümmert sich um die Konfiguration und Instanz Leben, während dass nur der SendNotification-Funktion.
Und über die Ausgabe #2es ist eben nicht jeder "Stapel", sondern als die queue-Funktion liefert sofort (enqueue und push-später) es ist nur eine Frage der zu einer Endlosschleife in Ihrem Gerät Token-Liste...
InformationsquelleAutor der Antwort baramuse