实现iOS的推送通知(服务器端)

时间:2011-09-04 18:17:43

标签: iphone ios push-notification apple-push-notifications

我们希望能够将简单的短信发送给我们所有的iphone用户。为此,我们显然需要创建一个存储设备令牌的服务器端代码,并在必要时推送消息。这样做有什么好的例子吗? (谈论服务器代码)

由于

3 个答案:

答案 0 :(得分:46)

如果您想自己托管,请查看easyAPNS,或者如果您对托管服务没有问题,请访问Urban Airship(他们有大量文档)

另一个很好的信息网站是Ray Wenderlich的网站,其中包含2部分教程:

答案 1 :(得分:16)

  // 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')

答案 2 :(得分:0)

我还建议使用外部服务,例如Urban Airship或PushApps。 我对上一个比较熟悉,我可以告诉你,除了"常规"推送通知消息,您还可以通过分段,位置甚至调度通知获得消息。一开始它可能看起来不像是一个关键功能,但随着用户群的增长,您将看到这些功能的重要性。