[英]apple push notification for iOS and google cloud messaging for android using php?
[英]Send push notification to ios app : Google cloud
我已经将我的PHP代码托管在Google云上。
我想向iOS应用发送推送通知。 我已启用端口2195和2196。
发送推送通知时,出现以下错误:
警告:stream_socket_client():SSL:对等重置连接
警告:stream_socket_client():无法启用加密
警告:stream_socket_client():无法连接到ssl://gateway.push.apple.com:2195(未知错误)
我对Google Cloud不太熟悉。 我应该怎么做才能使其正常工作?
这是代码:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', PEM_FILE_PATH . 'apns-dev.pem');
$fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
$data['msgs'] = "Failed to connect $err $errstr \n";
} else {
$payload = json_encode($body);
$msg = chr(0) . pack("n", 32) . pack("H*", str_replace(" ", "", $deviceToken)) . pack("n", strlen($payload)) . $payload;
$result = fwrite($fp, $msg);
if (!$result) {
$data['msgs'] = 'Message not delivered'; //. PHP_EOL;
} else {
$data['msgs'] = 'Success'; //. PHP_EOL;
}
fclose($fp);
}
return $data;
当我们尝试将数据发送到APNS(Apple推送通知服务)服务器时,主要问题是SSL证书 。
APNS使用此技术来为其用户提供更安全的连接。
正如APNS文档中所说:“ 每个证书都限于一个应用程序,还限于两个开发环境之一,每个开发环境都有自己分配的主机名 ”。 这样就可以使用两种环境
开发 (测试环境): ssl://gateway.sandbox.push.apple.com:2195
生产 (一旦启动该应用程序): ssl://gateway.push.apple.com:2195
如果要测试是否可以连接到APNS服务器,请尝试以下命令:
$ telnet gateway.sandbox.push.apple.com 2195
Trying 17.172.232.226...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.
如果出现错误,请确保防火墙允许端口2195上的传出连接。
然后,您可以测试您的SSL证书和私钥是否正常运行,并可以建立安全连接:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourDevCert.pem -key YourPrivateKey.pem
Enter pass phrase for YourPrivateKey.pem: ******
如果这样做有效,则意味着您的证书已正确设置(您应该看到一堆输出,这是openssl,可让您了解幕后情况)。
知道了所有这些信息后,我发现您的代码中有一个错误,还应该检查其他内容:
$payload
变量是否为json字符串。 $deviceToken
。 apns-dev.pem
证书并将其发送到生产环境(我认为您的生产证书是apns-prod.pem
因此请对其进行检查)。 stream_context_set_option($ctx, "ssl", "passphrase", "your_private_key");
如果您有任何麻烦或疑问,我将按照本教程发送第一个APNS推送通知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.