我正在使用以下 Ruby 代码来接收 APNs 在推送失败时返回的错误信息:
if IO.select([ssl], nil, nil, 5)
read_buffer = ssl.read(6)
process_error_response(read_buffer)
end
我注意到一种奇怪的情况,在使用IO.select时结果为非空,但read_buffer返回一个空字符串。经过调试后,我发现这会在使用开发APNs证书连接到gateway.push.apple.com时发生,而如果使用生产证书连接到gateway.sandbox.push.apple.com也会出现相同情况。
是否有任何程序上的方法可以检测到这种情况?比如,如果用户提供了推送证书并告知它是生产/开发环境,但无法在苹果开发者网站上验证该事实,是否有办法检测?我本以为连接会被拒绝,但实际上似乎会建立连接但处于部分损坏的状态。