私はこのRubyコードを使用して、プッシュが失敗したときにAPNからエラーを受け取ります。
if IO.select([ssl], nil, nil, 5)
read_buffer = ssl.read(6)
process_error_response(read_buffer)
end
IO.selectがnil以外であるのに、read_bufferが空の文字列を返すという奇妙な状況に気づきました。デバッグを行った後、開発用APNs証明書を使用してgateway.push.apple.comに接続するとこれが発生し、本番用証明書を使用してgateway.sandbox.push.apple.comに接続すると同じことが明らかに発生することがわかりました。
これが事実であることをプログラムで検出する方法はありますか?たとえば、ユーザーからプッシュ証明書が与えられ、それが本番/開発であると言われたが、Appleデベロッパサイトでその事実を実際に確認できない場合などです。接続が拒否されると思っていたのですが、代わりに作成されたようですが、部分的に壊れた状態になっています。