1

我的 PNS 在开发模式下运行良好。我已经使用 raywendelich 博客做到了这一点。同样我在生产模式下创建证书并从服务器运行相同的脚本但没有收到任何通知。

当我们从我们的服务器以生产模式进行测试时,需要哪些额外的步骤。这是非常迫切的需求。请帮助为生产模式做什么。

我们的 PHP 代码

<?php

// Put your device token here (without spaces):
$deviceToken = 'd5d89cab86e6f1a3cfa66dd853f3f4d7dd932c4a6da793cb9c86d31e9cfcb31f';

// Put your private key's passphrase here:
$passphrase = '*******';

// Put your alert message here:
$message = '****';

 $ctx = stream_context_create();
 stream_context_set_option($ctx, 'ssl', 'local_cert', 'ckm.pem');
 stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

 // Open a connection to the APNS server
 $fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

 if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);

  // Encode the payload as JSON
 $payload = json_encode($body);

 // Build the binary notification
 $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload))   . $payload;

 // Send it to the server
 $result = fwrite($fp, $msg, strlen($msg));

 if (!$result)
echo 'Message not delivered' . PHP_EOL;
 else
echo 'Message successfully delivered' . PHP_EOL;

  // Close the connection to the server
  fclose($fp);
4

1 回答 1

0

您需要创建生产 APNS 证书(与创建开发人员证书的方式非常相似)并使用它来连接到 Apple。开发和生产推送令牌不同,因此为了获得生产推送令牌,您必须构建应用的 AdHoc 版本。当您在设备上安装 ad-hoc 版本时,它应该会询问您是否要接收推送令牌。接受,您的代码应该将您的生产推送令牌发送到您的服务器(我假设您将所有推送令牌保存在某处的服务器上)。这是您需要用来测试生产推送代码的令牌。

于 2013-11-10T08:33:20.490 回答