web-dev-qa-db-ja.com

iOS(サーバー側)のプッシュ通知の実装

シンプルなテキストメッセージをすべてのiPhoneユーザーにプッシュできるようにしたいと考えています。そのためには、デバイストークンを保存し、必要なときにメッセージをプッシュするサーバー側コードを作成する必要があることは明らかです。これを行う良い例はありますか? (サーバーコードについて話す)

ありがとう

39
Alex1987

easyAPNS を自分でホストしたい場合、または rban Airship にアクセスしてください。

情報を提供するもう1つの良いサイトは、2部構成のチュートリアルをホストするRay Wenderlichのサイトです。

46
Frank
  // 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('[email protected]', 'IOSPushMsgStatus', $msg_iphone);
     fclose($fp);
    } //if($users_rows['Platform'] == 'Web' OR $users_rows['Platform'] == 'Android')
14
Abhijit

Urban Airshipや PushApps などの外部サービスを使用することもお勧めします。私は最後にもっと精通しており、「通常の」プッシュ通知メッセージに加えて、セグメンテーション、場所、またはスケジュール通知によってもメッセージを受け取ることができます。最初は重要な機能とは思えないかもしれませんが、ユーザーベースが拡大するにつれて、それらの機能がどれほど重要かがわかるでしょう。

0
Asaf