代码:(https://github.com/stuffmc/Safari-Push-Notifications/blob/master/index.php#L195)
stream_socket_client('ssl://gateway.push.apple.com:2195', $error, $errorString,
60, STREAM_CLIENT_CONNECT, $streamContext);
返回false
,但没有错误。这意味着当我发送到/v1/push时,每个设备/令牌都会失败:(PHP文档说:
如果errno返回的值为0,函数返回FALSE,则表明错误发生在connect()调用之前。这很可能是由于初始化套接字时出现问题。
我有这段代码运行完美的网站(开发/测试/分级),现在,我正试图转移到生产,它没有。
我应该注意调用
$ openssl s_client -connect gateway.push.apple.com:2195 -cert MyC.pem -key myK.pem
完美的作品。我有一个提示符,我可以在其中输入字符,当输入enter时,它退出-与我的dev测试相同。
我也没有发送到/v1/log
(如https://devforums.apple.com/thread/203825所述),所以我不知道问题在哪里:(
我通过这样生成.pem解决了这个问题:
openssl pkcs12 -in key-chain-export.p12 -out apple_push_cert_production.pem -nodes -clcerts
我还是很想知道我怎么可能有一个"提示"(从PHP或openssl),它是证书。
AND:虽然它修复了服务器端的问题,但我随后在客户端遇到了问题。哦…
我还应该提到我修复了服务器上的代码,以便/v1/log
从苹果那里得到一些东西。
见https://github.com/surrealroad/Safari-Push-Notifications/commit/0ae8a3ad3327a957c332090ea1bfcb146a40c5f3