0

現在、Android 用の GCM に取り組んでおり、PHP を使用してサーバー コードを実装しています。現在、私のコードは次のようになっています。

$url = 'https://android.googleapis.com/gcm/send';
$registrationIDs = array('device1', 'device2');//device ids from database.

$fields = array(
                'registration_ids'  => $registrationIDs,
                'data'              => array( "message" => $message ),
                );

$headers = array( 
                    'Authorization: key=' . $apiKey,
                    'Content-Type: application/json'
                );

// Open connection
$ch = curl_init();

// Execute post
$result = curl_exec($ch);

// Close connection
curl_close($ch);

実行すると、結果は次のようになります。

{
  "multicast_id": 5407120473654582795,
  "success": 1,
  "failure": 1,
  "canonical_ids": 1,
  "results": [
    {
      "registration_id": "skjdfhksdfgksudghldshfgkdjfghdiugf",
      "message_id": "0:1354101888763222%14c0e050f9fd7ecd"
    },
    {
      "error": "MismatchSenderId"
    }
  ]
}

GCM ページに注意事項があります。

  • メッセージが作成されたが、結果として正規の登録 ID が返された場合は、現在の登録 ID を正規の登録 ID に置き換える必要があります。
  • 返されたエラーが NotRegistered の場合、アプリケーションがデバイスからアンインストールされているため、その登録 ID を削除する必要があります。

私の質問は次のとおりです。

  1. サーバーの出力に基づいて、正規の結果が 1 つあります。しかし、それがどのデバイスに属しているかはわかりません。どのように判断すればよいですか?
  2. 質問 (1) に基づいて、デバイスを一度に 1 つずつ GCM に送信できる可能性があると考えています。しかし、これは別の問題を提起します。何百万ものデバイスを持っていても大丈夫ですか?
4

2 に答える 2

1

このページの情報に基づくGCM アーキテクチャの概要

これは、regid を「skjdfhksdfgksudghldshfgkdjfghdiugf」に置き換える必要がある配列の最初の要素です。配列の 2 番目の要素はアウトアンドアウトの失敗でした。

何百万ものデバイス?- いいえ!最大 1000 ? - はい

同じページにあった

registration_ids メッセージを受信するデバイス (登録 ID) のリストを含む文字列配列。少なくとも 1 つ、最大で 1000 の登録 ID が含まれている必要があります。

于 2012-11-28T14:01:07.527 に答える
0

Canonical ID の詳細については、GCM の高度なトピック ページを参照してください。具体的には次のとおりです。

後で別の登録 ID を使用してメッセージを送信しようとすると、GCM は通常どおりリクエストを処理しますが、レスポンスの registration_id フィールドに正規の登録 ID が含まれます。最終的に使用している ID が機能しなくなるため、サーバーに保存されている登録 ID をこの正規 ID に置き換えてください。

詳細については、こちらの応答形式セクションをご覧ください。

何百万ものデバイスに送信する場合、JSON を使用して 1000 個の登録 ID のブロックでメッセージを送信する必要があります。Google ドキュメントでは、6 台のデバイスに送信する例として次のように記載されています。

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "registration_ids": ["4", "8", "15", "16", "23", "42"]
}
于 2012-12-04T17:17:44.210 に答える