1

私はこれを理解しようとしてぐるぐる回っています。iOS でプッシュ通知が正常に機能するようになり、Android GCM で同じことをしようとしています。ユーザーの登録 ID を収集できるサービスを公開する方法に行き詰まっています。私のサーバーではJavaを使用するのは本当に苦痛なので、phpのみのソリューションが役立ちます。私の通知スクリプトはこれまでのところ次のようになっています。

require_once('config.php');
require_once 'Zend/Mobile/Push/Gcm.php';
require_once 'Zend/Mobile/Push/Message/Gcm.php';

$con = mysql_connect($CONFIG['db']['host'] , $CONFIG['db']['user'], $CONFIG['db']['pass']);
if (!$con) {
  echo "DBConnectionError: Could not connect to database";
}

$db = mysql_select_db($CONFIG['db']['database'], $con);
if (!$db) {
  echo "DBSelectError: Could not select database";
}

// optain list of devices to send pn to
$qt = "SELECT uid userid, apntoken "
    . "FROM members "
    . "WHERE apntoken IS NOT NULL "
    . "AND uid IN ("
    .   "SELECT fuid userid "
    .   "FROM avail "
    .   "WHERE apnsent IS NOT TRUE "
    .   "UNION "
    .   "SELECT uid userid "
    .   "FROM availbinary "
    .   "WHERE apnsent IS NOT TRUE "
    .   ") ";

//send gcm message
    $message = new Zend_Mobile_Push_Message_Gcm();
    $message->setId(time());
    $message->addToken($tokenRec['apntoken']);
    $message->setData($alert);

    $gcm = new Zend_Mobile_Push_Gcm();
    $gcm->setApiKey('AIzaSyCxxxxxxxxxxxxxxxnFn5mGkM');

    try {
        $response = $gcm->send($message);
    } catch (Zend_Mobile_Push_Exception $e) {
        // all other exceptions only require action to be sent or implementation of exponential backoff.
        die($e->getMessage());
    }

どんなアイデアでも大歓迎です。

4

1 に答える 1

2

ユーザーが registration_id を「アップロード」するには、php で POST メソッドを作成する必要があります。PHP POST リクエストを公開する方法に関するチュートリアルはたくさんあります。この POST リクエストの URI がhttp://yourserver/gcm/send_reg_idであり、この本文の Content-Type が任意 (テキスト、json、xml) であるとします。json を使用すると、アプリは上記の URL に POST リクエストを送信し、本文は次のようになります。

{ "reg_id" : "asdadsafdsf34ZXZZZZx", "user_id" : "xxxxxx" }

サーバーは POST リクエスト本文から上記の json 文字列を抽出し、reg_id をデータベースに挿入します。

次に、アプリで gcm-client.jar ライブラリを使用するだけで、 onRegistered() コールバックを受信したら、上記の POST リクエストをサーバーに送信します。

考慮すべき点がいくつかあります。

  1. リクエストを https にしてセキュアにする
  2. 「user_id」を追加して、ユーザーごとの登録を追跡し、将来的にパーソナライズされたプッシュ通知を提供します。
于 2012-07-17T15:14:37.643 に答える