【发布时间】:2015-08-09 09:52:59
【问题描述】:
我正在尝试从 PHP App Engine 后端发送 iOS 推送通知,但我收到以下错误。我不确定证书是否存在问题、我执行此操作的方式或 App Engine 特有的问题。这是我第一次向 iOS 发送推送通知。
这是我的代码:
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
{
//Handle Error
}
$body['aps'] = array(
'alert' => $data["message"],
'sound' => 'default',
);
$body["postID"] = $data["postID"];
$body["groupID"] = $data["groupID"];
$body["type"] = $data["type"];
$payload = json_encode($body);
foreach ($registrationIds as $registrationID)
{
$deviceToken = $registrationID;
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
}
fclose($fp);
这是我得到的错误:
PHP Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL
Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake
failure in fakefile.php
我不知道是什么原因。提前致谢
更新: 那不再是我得到的错误。现在我明白了:
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error)
【问题讨论】:
-
APNS文件夹的权限是什么,是嵌套权限吗?
-
我无法控制应用引擎中的文件夹权限,但据我所知,人们已经在应用引擎上成功实现了推送通知,所以我认为权限是正确的。
-
你还在面对这个问题吗?你能提供你自己的local cert吗?您是否知道limitations of sockets on App Engine 无法绑定特定的IP 地址或端口?
标签: php ios google-app-engine ssl apple-push-notifications