1

私はRubyにプッシュ通知システムを書いています。拡張インターフェイスを使用して通知を送信すると、正常に動作し、フィードバックサービスからの消費はまったく機能しません。アップルプッシュ通知サービス(APNS):フィードバックサービスの応答にバイトがありませんか?

私は、ソケットから自分自身を読み取るために、このような何かのコードを書いた:

 context  = OpenSSL::SSL::SSLContext.new 
     context.cert = OpenSSL::X509::Certificate.new(File.read(pem_path)) 
     context.key = OpenSSL::PKey::RSA.new(File.read(rsa_path)) 
     @socket = TCPSocket.new(host, port) 
     @ssl = OpenSSL::SSL::SSLSocket.new(@socket, context) 
     @ssl.connect 
     @socket.gets #read(38) has the same effect FWIW 

をしかしAPNSフィードバックサービスは、代わりに期待38の唯一の37バイトを返し、期待されるパッケージが台無しにされます。

Ruby APNS gemを使用してエラーを再現できます(hereのチケットを開封しました)。

私は、ファイルにAPNSフィードバックサービスから受信したすべてを保存し、ここでバイトを検査しようとしたとき、私は何を得るのですました:

ruby-1.9.2-p290 :035 > while b = f.readbyte 
ruby-1.9.2-p290 :036?> puts b 
ruby-1.9.2-p290 :037?> end 
21 
3 
1 
0 
32 
23 
35 
236 
232 
217 
53 
172 
143 
54 
130 
39 
157 
247 
205 
233 
231 
245 
140 
111 
104 
199 
214 
159 
60 
107 
169 
175 
42 
172 
57 
31 
160 

あなたが見ることができるように、配列は1でオフになって、 APNS Feedback Format

誰かが同じような問題を抱えていた、または私が間違っていることを見ることができますか? 2011分の19 @

おかげ

EDITを:

これはRubyのソケットの問題のようです。 java-apns lib次Clojureのコアは、同じアプリケーションのために期待される結果を返した証明書等

(def tokens (. (.. (APNS/newService) 
        (withCert "/Users/pcalcado/blah.p12" "blah") 
        withProductionDestination 
        build) 
       getInactiveDevices)) 

を使用して、私はbeing done by java-apns特別または私はRubyで間違ってやっている可能性が何かを見ることができません。私はこのシステムでClojureを使用しても構いませんが、今はすべてフィードバックがありますが、フィードバックはすでにMRIのRubyで書かれています。/

答えて

2

私は自分自身に尋ねています... @ソケット? は申し訳ありませんが、私はRubyプログラミングについて少しN00Bています:)

編集https://github.com/muccy/APNS/commit/4d62a3f33c4b31f7f81a0020aa70871232f46781

+0

Spot on。私は最初にあなたのコメントを見たときにSSLから読み取るように変更されましたが、実際にはxmasの前にそれをttyする時間がなかったので、今すぐ試してみました。ありがとう。 –

0

は、見てください: 私はこの問題は、あなたがこの時 見コミットSSLソケットから読み取る必要があるということです、あなたを確認しますJosh PriddleのAPND gemで。私はそれを成功裏に使用し、Appleのフィードバックを取り込むことを含む、そのコア機能が必要なときに機能すると考えています。それ以外の場合は、Rubyの別のコード例です。

関連する問題