我正在使用此 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 开发者网站上验证这一事实?我原以为连接会被拒绝,但它似乎已创建但处于部分断开的状态。