【发布时间】:2011-11-10 04:50:04
【问题描述】:
我们希望能够将简单的短信推送给我们所有的 iPhone 用户。为此,我们显然需要创建一个服务器端代码来存储设备令牌并在必要时推送消息。这样做有什么好的例子吗? (谈服务端代码)
谢谢
【问题讨论】:
标签: iphone ios push-notification apple-push-notifications
我们希望能够将简单的短信推送给我们所有的 iPhone 用户。为此,我们显然需要创建一个服务器端代码来存储设备令牌并在必要时推送消息。这样做有什么好的例子吗? (谈服务端代码)
谢谢
【问题讨论】:
标签: iphone ios push-notification apple-push-notifications
我还建议使用外部服务,例如 Urban Airship 或 PushApps。 我更熟悉最后一个,我可以告诉你,除了“常规”推送通知消息之外,你还可以通过分段、位置甚至调度通知来获取消息。起初它对您来说似乎不是一个关键功能,但随着您的用户群增长,您会看到这些功能的重要性。
【讨论】:
如果您想自己托管,请查看easyAPNS,或者如果您对托管服务没问题,请访问Urban Airship(他们有大量文档)
另一个很好的信息站点是 Ray Wenderlich 的站点,其中包含一个 2 部分教程:
【讨论】:
// Push Notification code for IPHONE in PHP
$deviceToken = $users_rows['gcm_regid'];
$passphrase = 'pass1234';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'DrinksterDevelopment.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 120, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
$body['aps'] = array(
// 'alert' => $_GET["message"].'#'.$_GET["type"].'#'.$_GET["deal_id"],
'alert' => $_GET["message"],
'sound' => 'default'
);
$body['other'] = $_GET["type"].'#'.$_GET["deal_id"];
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result_iphone = fwrite($fp, $msg, strlen($msg));
if (!$result_iphone)
$msg_iphone = 'Message not delivered' . PHP_EOL;
else
$msg_iphone = 'Message successfully delivered' . PHP_EOL;
mail('jackbrown00001@gmail.com', 'IOSPushMsgStatus', $msg_iphone);
fclose($fp);
} //if($users_rows['Platform'] == 'Web' OR $users_rows['Platform'] == 'Android')
【讨论】: