私はJava-APNSフレームワークを使用してiOSデバイスにプッシュ通知を送信しています。それは非常にうまく機能し(開発者のおかげです!)、すべてが正しく設定されているときにデバイスに送信することができます。ただし、失敗した場合は適切に処理したいと思います。特定の場合に受信する必要のある、文書化されたAPNSエラーコードがいくつかあります。
いくつかの失敗ケースをどのように作成しますか?ApnsDelegateを実装し、デリゲートを使用してApnsServiceオブジェクトを構築する独自のクラスがあります。プッシュの呼び出しで無効なトークンとペイロードの空の文字列を渡そうとしました:
service.push("ab", "")
しかし、ApnsDelegateのmessageSentメソッドは引き続き呼び出されます。代わりにmessageSendFailedメソッドで終わるか、connectionClosedで終わると思いますが、どちらも呼び出されません。誰かがこのようなものをテストして動作させましたか?これが私のクラスの例です...私は実際にScalaでこれを行っていますが、Javaを投稿した方が幸運だと思いました。呼び出されると、「メッセージがABに送信されました」と出力されます。
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());
}
}