私は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でオフになって、
誰かが同じような問題を抱えていた、または私が間違っていることを見ることができますか? 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で書かれています。/
Spot on。私は最初にあなたのコメントを見たときにSSLから読み取るように変更されましたが、実際にはxmasの前にそれをttyする時間がなかったので、今すぐ試してみました。ありがとう。 –