【问题标题】:Implementing Push notifications for iOS (Server Side)为 iOS 实现推送通知(服务器端)
【发布时间】:2011-11-10 04:50:04
【问题描述】:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我还建议使用外部服务,例如 Urban Airship 或 PushApps。 我更熟悉最后一个,我可以告诉你,除了“常规”推送通知消息之外,你还可以通过分段、位置甚至调度通知来获取消息。起初它对您来说似乎不是一个关键功能,但随着您的用户群增长,您会看到这些功能的重要性。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
          // 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')
        

        【讨论】:

        • 如果我使用共享托管服务器,是否可以将证书上传到它并使用此 php 代码?我已经尝试过,但找不到方法 - 顺便说一下,我使用 iPage。
        • 请注意,Apple 将反复打开和关闭 APN 连接视为拒绝服务附加。如果您每天发送一次推送通知,那么根据 Apple 的说法,打开/关闭连接是可以的。
        猜你喜欢
        • 2011-07-14
        • 1970-01-01
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 2023-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多