我一直在努力想知道如何从沙箱APNS到生产APNS。下面是用于向我的应用程序发送通知的PHP代码。
$passphrase = 'SomethingStrong';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $_SERVER['DOCUMENT_ROOT'] . '/ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
{
//return json_encode(array('response' => 'connection_fail'));
}
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
return json_encode(array('response' => 'unsuccessful'));
else
return json_encode(array('response' => 'successful'));
fclose($fp);
当我保留网址ssl://gateway.sandbox.push.apple.com:2195
时,这一切都有效,但是当我将其更改为ssl://gateway.push.apple.com:2195
时,我的应用程序没有通知,但PHP输出它已成功发送。
我正在使用开发证书进行代码签名。
我是通知新手,之前从未使用过它们,如果我做的事情非常明显,那就很抱歉。感谢。