Verwenden Sie den Apple Push Notification Service über Java

8

Ich versuche, ein Java-Programm zu implementieren, das eine Apple Push-Benachrichtigung an eine iPhone-Client-App sendet ... Gefunden die folgende Bibliothek: Java-APNs

Anbietercode:

Ich habe den folgenden Code (von Javapns) für die Verwendung in meiner App erstellt:

%Vor%

Wenn ich diese App starte (wie Sie in den Log4j-Anweisungen sehen können), gibt es keine Ausnahmen:

%Vor%

Aber meine Client App erhält keine Benachrichtigungen!

IDPP-Registrierungsprozess:

Auch Folgendes wurde im iPhone Developer Program Portal (IDPP) ausgeführt:

  • Erstellt das APNS-basierte SSL-Zertifikat und Schlüssel

  • Erstellt und installiert das Bereitstellungsprofil

  • Installierte das SSL-Zertifikat und den Schlüssel auf dem Server.

Lesen Sie den Apple Push Notification Service Guide mehrmals durch und beachten Sie einige Dinge:

(1) Auf Seite 15 heißt es, dass das Geräte-Token nicht dasselbe ist wie das Geräte-UDID (das ich derzeit fälschlicherweise als zweiten Parameter innerhalb der PushNotificationManager.addDevice () -Methode übergebe (siehe oben)).

Auf Seite 17 heißt es:

"APNs generiert ein Geräte-Token unter Verwendung der im eindeutigen Gerätezertifikat enthaltenen Informationen. Das Geräte-Token enthält eine Kennung des Geräts. Anschließend verschlüsselt es das Geräte-Token mit einem Token-Schlüssel und gibt es an das Gerät zurück. Das Gerät gibt das Gerät zurück Token an die anfordernde Anwendung als NSData-Objekt gesendet werden, und die Anwendung das Geräte-Token entweder an den Provider im binären oder im hexadezimalen Format übermitteln muss. "

iPhone OS Client Implementierung

(2) Nachdem ich die Seiten 33 bis 34 gelesen hatte, entdeckte ich, dass ich den Objective-C-Code nicht eingefügt hatte, um die App bei APNs registrieren zu lassen.

Bin ich kein Objective-C-Entwickler, kann ich also den Gerätecode wiederherstellen oder muss ich ihn aus dem Zertifikat holen?

Wo erhalte ich das Geräte-Token (tut mir leid, jemand anderes hat die Objective-C-Client-App geschrieben und ich bin ein Java-Entwickler)?

Frage (n):

(1) Abgesehen davon, dass Sie nicht wissen, wo Sie das Geräte-Token und die Registrierung des mobilen Client-Codes erhalten, gibt es noch etwas, das ich nicht überprüft oder übersehen habe?

(2) Benutze ich die JavaPns-Bibliothek richtig?

Danke, dass Sie sich die Zeit genommen haben, dies zu lesen ...

    
mw_javaguy 31.08.2009, 04:48
quelle

6 Antworten

8

Nur ein kleiner Tipp, um Ihren empfangenen Token in ein Format zu konvertieren, das für die Registrierung mit Javapns geeignet ist, macht dieser Code den Trick:

%Vor%

}

    
ZaBlanc 09.10.2009, 14:19
quelle
18

Als beschämende Werbung rate ich dazu, java-apns zu verwenden. Ihr Code sieht folgendermaßen aus:

%Vor%     
notnoop 25.11.2009 21:42
quelle
1
___ qstnhdr ___ Verwenden Sie den Apple Push Notification Service über Java ___ answer6810579 ___

Ich habe das versucht und ich werde immer gehängt, wenn ich die Benachrichtigung sende, und nichts wird gesendet.

Das Problem stammt von der folgenden Funktion:

%Vor%

Es scheint, dass der bufferedreader NULL

hat %Vor%

Wenn also dieser Teil des Codes getroffen wird, bleibt er dort in der Endlosschleife hängen

%Vor%

Dieser Ausgang ist [null]

Dann werden dann die Schleifen ausgeführt:

%Vor%

Der Code tritt in die erste while-Schleife ein und wartet darauf, dass der BufferedReader bereit ist und wartet nur weiter ..... ad das ist dein hängenden

    
___ answer1800161 ___

Als beschämende Werbung rate ich dazu, PushNotificationManager.closeConnection() zu verwenden. Ihr Code sieht folgendermaßen aus:

%Vor%     
___ answer1356771 ___
  1. Ihr Java-Code sieht solide aus! Vergessen Sie jedoch nicht, die Verbindung durch application:didRegisterForRemoteNotificationsWithDeviceToken: zu schließen. Es ist wichtig, nach sich selbst aufzuräumen.

    Als Nebenkommentar merke ich, dass Sie das Gerät "iPhone" hinzufügen, aber danach nach "Lambo" fragen. Dies ist ein Hinweis auf einen Fehler.

  2. Das im Code angezeigte Geräte-Token ist falsch. Geräte-Tokens, derzeit als 32-Bit-Wert, der in 64 Zeichen umgewandelt wird. Ich nehme an, dass der Server unbemerkt fehlschlägt, wenn er die Benachrichtigung an ein ungültiges Token weiterleitet!

  3. Der Geräte-Token kann nur über die App selbst abgerufen werden. Wie durch die Push-Benachrichtigungsleitfaden schlägt vor, dass sich die iPhone-App beim Start zur Benachrichtigung anmelden muss. In der NSLog , das iPhone muss das Geräte-Token an Ihren Java-Provider-Server senden. (Zu Debugging-Zwecken können Sie einfach ServerSocket das Geräte-Token verwenden und es verwenden; es ändert sich nie zwischen Läufen).

    Ich würde empfehlen, dass Sie einen Server in Ihrem Java-Provider-Server erstellen, um Geräte-Token zu erhalten. Richten Sie eine %code% ein, um Verbindungen vom iPhone und ihrem Geräte-Token (und allen zusätzlichen Informationen, die Sie benötigen) zu erhalten, und fügen Sie die Token in die Datenbank ein.

___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer1544075 ___

Nur ein kleiner Tipp, um Ihren empfangenen Token in ein Format zu konvertieren, das für die Registrierung mit Javapns geeignet ist, macht dieser Code den Trick:

%Vor%

}

    
___ tag123applepushnotifications ___ Der Apple Push Notification Service ist ein Service von Apple Inc., der zusammen mit iOS 3.0 gestartet wurde. APNS wird zusammen mit Mac OS X Lion Server verwendet, um Updatebenachrichtigungen an Clients zu senden, die sich über ein Konfigurationsprofil für den Empfang von Updates registriert haben Außerdem werden die Mail-, Kalender- und Kontaktdienste des Servers verwendet. Dies bedeutet, dass Geräte wie das iPhone und Anwendungen wie iCal auf dem Mac eine Benachrichtigung erhalten können ___ answer7719401 ___

JavaPNS wurde vor kurzem auf 2.0 aktualisiert und ALLE berichteten Probleme bis zum Veröffentlichungsdatum behoben. Es behebt das Problem, das Sie beschreiben, und die Verwendung der Bibliothek ist VIEL einfacher als je zuvor (Sie können jetzt eine Benachrichtigung mit einer einzigen Codezeile senden).

    
___ answer1355865 ___

Sie scheinen das Token zu verpassen

%Vor%

Nimmt ID- und Token-Check:

Ссылка

Die einzige Möglichkeit, ein Token zu erhalten, ist von der iPhone App. Ein gültiges Token sieht etwa so aus: 1d2d6f34 c5028bca c50df5f9 1992c912 ce7deae8 3bbe7da5 447f6a68 cfecdc0e

    
___ qstntxt ___

Ich versuche, ein Java-Programm zu implementieren, das eine Apple Push-Benachrichtigung an eine iPhone-Client-App sendet ... Gefunden die folgende Bibliothek: Java-APNs

Anbietercode:

Ich habe den folgenden Code (von Javapns) für die Verwendung in meiner App erstellt:

%Vor%

Wenn ich diese App starte (wie Sie in den Log4j-Anweisungen sehen können), gibt es keine Ausnahmen:

%Vor%

Aber meine Client App erhält keine Benachrichtigungen!

IDPP-Registrierungsprozess:

Auch Folgendes wurde im iPhone Developer Program Portal (IDPP) ausgeführt:

  • Erstellt das APNS-basierte SSL-Zertifikat und Schlüssel

  • Erstellt und installiert das Bereitstellungsprofil

  • Installierte das SSL-Zertifikat und den Schlüssel auf dem Server.

Lesen Sie den Apple Push Notification Service Guide mehrmals durch und beachten Sie einige Dinge:

(1) Auf Seite 15 heißt es, dass das Geräte-Token nicht dasselbe ist wie das Geräte-UDID (das ich derzeit fälschlicherweise als zweiten Parameter innerhalb der PushNotificationManager.addDevice () -Methode übergebe (siehe oben)).

Auf Seite 17 heißt es:

"APNs generiert ein Geräte-Token unter Verwendung der im eindeutigen Gerätezertifikat enthaltenen Informationen. Das Geräte-Token enthält eine Kennung des Geräts. Anschließend verschlüsselt es das Geräte-Token mit einem Token-Schlüssel und gibt es an das Gerät zurück. Das Gerät gibt das Gerät zurück Token an die anfordernde Anwendung als NSData-Objekt gesendet werden, und die Anwendung das Geräte-Token entweder an den Provider im binären oder im hexadezimalen Format übermitteln muss. "

iPhone OS Client Implementierung

(2) Nachdem ich die Seiten 33 bis 34 gelesen hatte, entdeckte ich, dass ich den Objective-C-Code nicht eingefügt hatte, um die App bei APNs registrieren zu lassen.

Bin ich kein Objective-C-Entwickler, kann ich also den Gerätecode wiederherstellen oder muss ich ihn aus dem Zertifikat holen?

Wo erhalte ich das Geräte-Token (tut mir leid, jemand anderes hat die Objective-C-Client-App geschrieben und ich bin ein Java-Entwickler)?

Frage (n):

(1) Abgesehen davon, dass Sie nicht wissen, wo Sie das Geräte-Token und die Registrierung des mobilen Client-Codes erhalten, gibt es noch etwas, das ich nicht überprüft oder übersehen habe?

(2) Benutze ich die JavaPns-Bibliothek richtig?

Danke, dass Sie sich die Zeit genommen haben, dies zu lesen ...

    
___
notnoop 31.08.2009 14:14
quelle
1

Ich habe das versucht und ich werde immer gehängt, wenn ich die Benachrichtigung sende, und nichts wird gesendet.

Das Problem stammt von der folgenden Funktion:

%Vor%

Es scheint, dass der bufferedreader NULL

hat %Vor%

Wenn also dieser Teil des Codes getroffen wird, bleibt er dort in der Endlosschleife hängen

%Vor%

Dieser Ausgang ist [null]

Dann werden dann die Schleifen ausgeführt:

%Vor%

Der Code tritt in die erste while-Schleife ein und wartet darauf, dass der BufferedReader bereit ist und wartet nur weiter ..... ad das ist dein hängenden

    
sergio 25.07.2011 00:00
quelle
0

JavaPNS wurde vor kurzem auf 2.0 aktualisiert und ALLE berichteten Probleme bis zum Veröffentlichungsdatum behoben. Es behebt das Problem, das Sie beschreiben, und die Verwendung der Bibliothek ist VIEL einfacher als je zuvor (Sie können jetzt eine Benachrichtigung mit einer einzigen Codezeile senden).

    
Sylvain P. 10.10.2011 22:29
quelle
0

Sie scheinen das Token zu verpassen

%Vor%

Nimmt ID- und Token-Check:

Ссылка

Die einzige Möglichkeit, ein Token zu erhalten, ist von der iPhone App. Ein gültiges Token sieht etwa so aus: 1d2d6f34 c5028bca c50df5f9 1992c912 ce7deae8 3bbe7da5 447f6a68 cfecdc0e

    
Sam 31.08.2009 05:03
quelle