JavaPNSおよびJRE7

アクティビティのタイプごとに、プッシュ通知をAppleデバイスに送信する必要に直面しました。 JavaPNS 2.2ライブラリが見つかり、開発者バージョン用の証明書が準備され、プッシュ通知を送信するサービスが作成され、すべてが開始され、すべてがオフになり、プッシュ通知が送信されました。 しかし、リリース日が来たので、Production証明書が再度準備され、p12の秘密鍵と一緒にエクスポートされ、すべてがサーバーにインストールされます... ログから判断すると、プッシュは送信されますが、デバイスには何も送信されません。

最初に、 JavaPNSのドキュメントをチェックして、あまり期待しないエントリーを見てください。

* JAVA 7について*:

一部のユーザーは、Java 7の使用中(一般に、JavaPNSだけでなく)SSL接続の作成に問題があると報告しています。

この問題が完全に解決されるまで、Java 5または6でJavaPNSを実行してみてください。

SSL関連の接続の問題。


グーグルはほぼ同じ結果とヒントを提供します。 しかし、問題に関する1つの言及が見つかりました。

Java 7(JDK 1.7)は、Entrust Root CAを認識しません。 APNS証明書、キー、およびEntrust CAルート証明書をp12ファイルにインポートします。 そのファイルにコードを向けると、動作します。


一番下の行は、何らかの理由で、oracleはjre7からルート証明書Entrustを除外しました。

したがって、この証明機関についてjreに伝える必要があります。 オプション2、それを/ usr / lib / jre7 / ...に配置します(邪悪な管理者はルート権限を与えないが、何もインストールしたくないため、パスではありません)。2番目のオプションは、証明書と秘密鍵。 私たちがすること。



1.証明書をダウンロードする

curl https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer > entrust_ssl_ca.cer
      
      





2. KeyChainにインポートし、およそ以下を受け取ります

画像

3. 3つのエンティティを区別します:証明書、秘密鍵、ルート証明書Entrust

画像

4. [3つのアイテムをエクスポート]を右クリックし、p12コンテナーを保存します(パスワードの入力を忘れないでください)

5.次に、このp12を使用してgateway.push.apple.comに接続し、ユーザーにスパムを通知します:)



All Articles