Appleプッシュ通知をiPhoneクライアントアプリに送信するJavaプログラムを実装しようとしています...次のライブラリが見つかりました:Java APNs
プロバイダーコード:
私のアプリで使用する次のコードを(Javapnsから)作成しました:
try {
PayLoad payLoad = new PayLoad();
payLoad.addAlert("My alert message");
payLoad.addBadge(45);
payLoad.addSound("default");
PushNotificationManager pushManager = PushNotificationManager.getInstance();
pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");
log.warn("Initializing connectiong with APNS...");
// Connect to APNs
pushManager.initializeConnection(HOST, PORT,
"/etc/Certificates.p12", "password",
SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
Device client = pushManager.getDevice("Lambo");
// Send Push
log.warn("Sending push notification...");
PushNotificationManager.getInstance().sendNotification(client, payLoad);
}
catch (Exception e) {
throw new ApnsPushNotificationException("Unable to send push " + e);
}
このアプリを実行すると(Log4jステートメントからわかるように)、発生する例外はありません。
WARN [MyCode] Initializing connectiong with APNS...
WARN [MyCode] Sending push notification...
しかし、私のクライアントアプリは通知を受け取りません!
IDPP登録プロセス:
また、iPhone Developer Program Portal(IDPP)で次のことを行いました。
APNSベースのSSL証明書とキーを作成しました
プロビジョニングプロファイルを作成してインストールしました
サーバーにSSL証明書とキーをインストールしました。
Appleプッシュ通知サービスガイドを数回読んで、いくつかのことに気づきました。
(1)15ページに、デバイストークンがデバイスUDIDと同じではないと記載されています(現在、PushNotificationManager.addDevice()メソッド内の2番目のパラメーターとして誤って渡しています(上記を参照))。
17ページには、次のように記載されています。
「APNは、一意のデバイス証明書に含まれる情報を使用してデバイストークンを生成します。デバイストークンにはデバイスの識別子が含まれます。次に、トークンキーを使用してデバイストークンを暗号化し、デバイスに返します。デバイスは、デバイストークンをデバイスに返します。アプリケーションをNSDataオブジェクトとして要求します。次に、アプリケーションはデバイストークンをバイナリ形式または16進形式でプロバイダーに配信する必要があります。」
iPhoneOSクライアントの実装
(2)33〜34ページを読んだ後、アプリをAPNに登録するためのObjective-Cコードが含まれていないことに気付きました。
Objective-C開発者ではないので、デバイスコードを回復できるのはここですか、それとも証明書から取得する必要がありますか?
デバイストークンはどこで入手できますか(申し訳ありませんが、他の誰かがObjective-Cクライアントアプリを作成し、私はJava開発者です)?
質問:
(1)デバイストークンとモバイルクライアントコードの登録をどこで取得できるかわからないことを除いて、私が見落としたり見逃したりしていないことは他にありますか?
(2)Javapnsライブラリを正しい方法で使用していますか?
これをお読みいただきありがとうございます...