首先,这不是关于认证或开发/分发的问题。
我使用了分发认证和服务器 url -> gateway.push.apple.com:2195
我在本地服务器(apache2)中进行了测试,它可以工作!
但是,在我的真实服务器(IIS/Window 服务器)中,我使用了相同的 php 代码、相同的认证文件(.pem)和相同的 iphone 应用程序......等等,它打印“连接到 APNS 消息已成功传递”,但我的手机没有'没有收到消息。
一个怀疑是,我通过 cmd 命令行“openssl s_client -connect gateway.push.apple.com:2195 -cert xxxx.pem”测试了我的认证文件(.pem),它返回“验证返回码:20(无法获取本地颁发者证书)。所以我找到了下载委托证书(.cer)并执行“openssl s_client -connect gateway.push.apple.com:2195 -cert xxxx.pem -CAfile entrust_2048_ca.cer”的解决方案,它返回了“验证返回代码:0'。所以我添加了我的 php 代码 'stream_context_set_option($ctx, 'ssl', 'CAfile', 'entrust_2048_ca.cer');',但它没有解决同样的问题。