【发布时间】:2016-10-20 05:44:50
【问题描述】:
我有一个向 Apple APNS 服务器发送推送通知的 PHP 脚本。
它应该回显响应代码485,这表明消息已成功发送。但是,当我运行代码时,它每次都显示不同的数字代码,并且没有发送消息。
代码如下:
$payload = array(
'aps' => array(
'alert' => $message,
'T_ID' => $data["trip_id"],
'S' => $state,
'Api' => 2,
'sound' => 'default'
));
$body = array();
$body['aps'] = array('alert' => "request trip");
$body['aps']['notifurl'] = $payload;
$body['aps']['badge'] = 2;
$payload = json_encode($body);
$ret = array(
"error" => 0
);
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', dirname(BASEPATH) . "/uploads/" . $this->_apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $this->_passphrase);
@$apns = stream_socket_client('tls://' . $this->_apnsHost . ':' . $this->_apnsPort, $error, $errorString, 200, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns) {
//die('Error creating ssl socket ' . $error . ' ' . $errorString);
$ret["error"] = 1;
$ret["details"] = 'Error creating ssl socket ' . $error . ' ' . $errorString;
}
$apnsMessage = // Command "1"
chr(1)
// Identifier "88"
. pack('N', 88)
// Expiry "tomorrow"
. pack('N', time() + 86400)
// Token length
. chr(0) . chr(32)
// Device token
. pack('H*', str_replace(' ', '', $deviceToken))
// Payload length
. chr(0) . chr(strlen($payload))
// Actual payload
. $payload . $payload;
echo fwrite($apns, $apnsMessage);
fclose($apns);
为什么这没有按预期工作?
【问题讨论】:
标签: php push-notification apns-php