問題タブ [javapns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - javapns Mac でのエラー処理
PHPサーバー側サービスを介してAPNSを実行しました。それは完璧に機能しました。今、私はJavaコードで同じことをしようとしています. 次の URL からパッケージを見つけました。
https://code.google.com/p/javapns/downloads/list
このコードを実行しようとすると、次のエラーが発生します。
spring-mvc - JavaAPNS はローカルで実行されますが、Centos では実行されません
問題
centos で Apple APNS を設定する際に問題が発生しています。Apache tomcat をデプロイして正常に動作させています。また、Javapns を使用してプッシュ メッセージを送信しています。
私のプッシュ通知は、Windows (Eclipse 内および Apache スタンドアロン) で正常に動作しています。しかし、アプリケーションをサーバー (centos 6) にデプロイすると、エラーが発生します: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 信頼できる証明書が見つかりません
私が言ったように、Windowsで完璧に機能するp12証明書を使用しています。しかし、Centosでは運がありません。
環境:
Spring 4 がデプロイされた Web アプリケーションを含む Apache Tomcat。centos 6 で実行されています。Java 1.7.57 を使用しています。もちろん、プッシュ通知を開始するために Javapns を使用します。そして、私の P12 証明書が WEB-INF/certs/certificate.p12 内に配置されていることは言及する価値があると思います。
- Web サーバー用の SSL 証明書を持っていません。
私の質問:
Javapns のドキュメントには、Javapns は Web アプリケーションの一部として、またはスタンドアロンとしても機能するように設計されていると記載されていますが、サービスを実行できるようにするためにサーバーで変更する必要がある特別な構成はありますか?
私を混乱させているのは、同じp12証明書がローカルでは機能しますが、Linuxでは機能しないということですか?
これはサーバー上のセキュリティ チェーンに関連するものですか? またはそのようなサービスの実行を許可するApache tomcatの設定?
この問題に本当に行き詰まっていると感じたので、これを投稿して、ほとんどすべてを試しました。
前もって感謝します。
sockets - SSLソケット書き込みで接続リセット例外が発生する
javapns ライブラリを使用して iOS プッシュ通知を送信しようとしています。コードは Java 6 では正常に動作しますが、Java 7 では動作しません。Java コード this.socket.getOutputStream().write(bytes); で SSL ソケットに書き込もうとしています。しかし、次の例外が発生します: -
2015-09-24 02:01:17,330 [リスト モードの JavaPNS グループ化通知スレッド] エラー javapns.notification.PushNotificationManager (PushNotificationManager.java:496) - 配信エラー java.net.SocketException: java.net.SocketInputStream で接続がリセットされました。 read(SocketInputStream.java:196) ~[?:1.7.0_79] at java.net.SocketInputStream.read(SocketInputStream.java:122) ~[?:1.7.0_79] at sun.security.ssl.InputRecord.readFully( InputRecord.java:442) ~[?:1.7.0_79] at sun.security.ssl.InputRecord.read(InputRecord.java:480) ~[?:1.7.0_79] at sun.security.ssl.SSLSocketImpl.readRecord( SSLSocketImpl.java:934) ~[?:1.7.0_79] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) ~[?:1.7.0_79] at sun.security.ssl.SSLSocketImpl.writeRecord( SSLSocketImpl.java:709) ~[?:1.7.0_79] で sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122) ~[?:1.7.0_79] で java.io.OutputStream.write(OutputStream.java:75) で ~[?:1.7.0_79] javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:464) [utils-1.0.jar:?] javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:409) [utils-1.0.jar:?] javapns で.notification.transmission.NotificationThread.runList(NotificationThread.java:283) [utils-1.0.jar:?] javapns.notification.transmission.NotificationThread.run(NotificationThread.java:254) [utils-1.0.jar:?] java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] でwrite(OutputStream.java:75) ~[?:1.7.0_79] で javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:464) [utils-1.0.jar:?] で javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager) .java:409) [utils-1.0.jar:?] javapns.notification.transmission.NotificationThread.runList(NotificationThread.java:283) [utils-1.0.jar:?] javapns.notification.transmission.NotificationThread.run で(NotificationThread.java:254) [utils-1.0.jar:?] java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] でwrite(OutputStream.java:75) ~[?:1.7.0_79] で javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:464) [utils-1.0.jar:?] で javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager) .java:409) [utils-1.0.jar:?] javapns.notification.transmission.NotificationThread.runList(NotificationThread.java:283) [utils-1.0.jar:?] javapns.notification.transmission.NotificationThread.run で(NotificationThread.java:254) [utils-1.0.jar:?] java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] で409) [utils-1.0.jar:?] で javapns.notification.transmission.NotificationThread.runList(NotificationThread.java:283) [utils-1.0.jar:?] で javapns.notification.transmission.NotificationThread.run(NotificationThread. java:254) [utils-1.0.jar:?] java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] で409) [utils-1.0.jar:?] で javapns.notification.transmission.NotificationThread.runList(NotificationThread.java:283) [utils-1.0.jar:?] で javapns.notification.transmission.NotificationThread.run(NotificationThread. java:254) [utils-1.0.jar:?] java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] で
以下は私のsslデバッグログです: -
編集:このSSLSessionを印刷したとき
// この接続で使用されている SSL セッションを返します。これらは長期間存続する可能性があり、多くの場合、一部のユーザーのログイン セッション全体に対応します。セッションは、そのセッションのすべての接続でアクティブに使用されている特定の暗号スイートと、セッションのクライアントとサーバーの ID を指定します。このメソッドは、必要に応じて最初のハンドシェイクを開始し、ハンドシェイクが確立されるまでブロックします。最初のハンドシェイク中にエラーが発生した場合、このメソッドは、「SSL_NULL_WITH_NULL_NULL」の無効な暗号スイートを報告する無効なセッション オブジェクトを返します。
System.out.println(session.getLocalCertificates()); // Java 6 で同じ証明書を使用しているときに null を取得しましたが、 null を取得できませんでした。
ios - バックグラウンドで iOS プッシュ メッセージを受信できない
私はswiftでIOSプッシュについて書いている初心者です。アプリがフォアグラウンドで実行されている場合は機能しますが、アプリがバックグラウンドまたは閉じている間は機能しません。ちなみに、APNS.newPayload().alertBody でアプリがバックグラウンド時やクローズ時にアラートメッセージを受け取ることができます。助けてくれてありがとう。
以下は私のサーバーとiosコードです。
iOSコード
サーバーコード
このトピックに関するいくつかの質問を読みましたが、この問題を解決できません。
以下のようにiOSコードで他の機能を試しましたが、うまくいきません。
APNS プッシュはフォアグラウンドでは機能するがバックグラウンドでは機能しない
実装方法がわかりません。教えてもらえますか?どうもありがとう
お手伝いいただきありがとうございます。コンテンツの値を 1 に設定して問題を解決します。
APN バックグラウンド更新の参照 、AppDelegate.m の設定
push-notification - iOS でのプッシュ通知の受信に関する問題
2 つの異なるサーバーからプッシュ通知を受信する際に問題が発生します。サーバーのバックエンド コードは Java で記述されておりjavapns
、Apple プッシュ通知用のライブラリを使用しています。(サーバーの 1 つから) 通知を受け取ると、次のログ ステートメントが表示されます。
2015-11-06/12:17:15.829 [DEBUG] [] [javapns.notification.Payload] - アラートの追加 [アラート メッセージ]
2015-11-06/12:17:16.054 [デバッグ] [] [javapns.communication.ConnectionToAppleServer] -
Creating SSLSocketFactory
2015-11-06/12:17:16.127 [デバッグ] [] [javapns.communication.ConnectionToAppleServer] -
Creating SSLSocket to gateway.sandbox.push.apple.com:2195
2015-11-06/12:17:16.776 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Initialized Connection to Host: [gateway.sandbox.push.apple.com] Port: [2195]: 6644621c[SSL_NULL_WITH_NULL_NULL: Socket[addr=gateway.sandbox.push.apple.com/17.172.232.45,port=2195,localport=57181]]
2015-11-06/12:17:16.778 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Building Raw message from deviceToken and payload
2015-11-06/12:17:16.779 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Built raw message ID 1 of total length 91
2015-11-06/12:17:16.779 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Attempting to send notification: {"aps":{"alert":"Alert Message"}}
2015-11-06/12:17:16.779 [デバッグ] [] [javapns.notification.PushNotificationManager] -
to device: e61aa2adfa16449f894b317ea3b4dbbfe4589000abdec7c8c0eb3c7b92654e4c
2015-11-06/12:17:17.696 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Flushing
2015-11-06/12:17:17.696 [デバッグ] [] [javapns.notification.PushNotificationManager] -
At this point, the entire 91-bytes message has been streamed out successfully through the SSL connection
2015-11-06/12:17:17.696 [デバッグ] [] [javapns.notification.PushNotificationManager] -
Notification sent on first attempt
2015-11-06/12:17:17.696 [DEBUG] [] [javapns.notification.PushNotificationManager] - 応答の読み取り
2015-11-06/12:17:22.698 [DEBUG] [] [javapns.notification.PushNotificationManager] - 接続を閉じています
しかし、(他のサーバーから)通知を受信しないと、次のログが表示されます。
2015-11-20/13:37:50.539 [デバッグ] [] [javapns.notification.Payload] - アラートの追加 [アラート メッセージ]
2015-11-20/13:37:50.543 [デバッグ] [] [javapns.notification.PushNotificationManager] - 応答の読み取り
2015-11-20/13:37:50.545 [デバッグ] [] [javapns.notification.PushNotificationManager] - 接続を閉じています
ここでは、SSL Socket Factory の作成に関するログ ステートメントやその他の強調表示されたテキストを取得していません。そして、ConnectionToAppleServer
クラスは呼び出されていません。したがって、jar ファイルが欠落しているかどうかは疑問です。
注:両方のサーバーで同じ開発証明書を使用しています。
どんな助けでも大歓迎です。
ios - データベースでAPNSデバイストークンの冗長性を防ぐ方法
アプリに apns 通知を使用しています。このために、apns デバイス トークンを SQL データベースに保存しています。
問題は、ユーザーがアプリを削除またはインストールするたびに、新しいデバイス トークンが生成され、これがデータベースに保存されることです。同じユーザーが複数のデバイスを持つことができるため、そのユーザーのトークンを更新できず、新しいレコードが取得されます。作成した。これにより、同じデバイスと同じユーザーに対して多くのレコードが作成されました。後でパフォーマンスの問題につながる可能性があります。
助けてください。同じユーザーの複数のトークンを保存する問題を修正するにはどうすればよいですか。