Ich verwende das Java-APNS-Framework, um Push-Benachrichtigungen an iOS-Geräte zu senden. Es funktioniert sehr gut (danke an den Entwickler!) Und ich kann zu meinen Geräten senden, wenn alles richtig eingerichtet ist. Ich möchte jedoch Fehlerfälle richtig behandeln. Es gibt einige APNS dokumentierte Fehlercodes, die für bestimmte Fälle empfangen werden sollte:Verwenden von Java-Apns zum Erkennen von Problemen mit Push
Wie würde ich einige der nicht Fälle schaffen? Ich habe meine eigene Klasse, die ApnsDelegate implementiert und mein ApnsService-Objekt mit meinem Delegaten erstellt. Ich habe versucht, einen ungültigen Token in meinem Ruf vorbei sowie eine leere Zeichenfolge für Nutzlast drücken:
service.push("ab", "")
aber die messagesent Methode meiner ApnsDelegate wird noch genannt. Ich würde erwarten, dass dies in der Methode messageSendFailed oder vielleicht connectionClosed endet, aber keiner wird aufgerufen. Hat jemand dieses Zeug getestet und es zur Arbeit gebracht? Hier ist ein Beispiel meiner Klasse ... Ich mache das eigentlich in Scala, aber ich dachte, ich hätte mehr Glück, wenn ich Java gepostet hätte. Beim Aufruf wird nur "Nachricht an AB gesendet" gedruckt.
public class ApnsSender implements ApnsDelegate {
public void send(Notification Notification) {
ApnsService service = getApnsService();
String payload = getPayload(notification);
service.push("ab", "");
}
private ApnsService getApnsService() { ... }
private String getPayload(Notification notification) { ... }
public void messageSent(ApnsNotification message) {
String token = Utilities.toHexString(message.getDeviceToken());
System.out.println("Message sent to " + token);
}
public void messageSendFailed(ApnsNotification message, Throwable e) {
System.out.println("Message failed");
}
public void messageSent(DeliveryError e, Int messageIdentifier) {
System.out.println("Message closed with error code " + e.code());
}
}
Ich lasse die Frage da draußen für den Fall, dass jemand immer noch die Antwort will, aber ich sehe jetzt [JavaPNS] (http://code.google.com/p/javapns) als Alternative. Es scheint viel besser für Fail-Fälle aktiviert und wurde zuletzt im letzten Monat aktualisiert. Ich war in der Lage, meine Push-Benachrichtigungen leicht zu senden sowie einen Fehlerfall zu erstellen. java-apns scheint seit über einem Jahr nicht mehr angefasst worden zu sein. – ShatyUT