0

デバイスがアイドル状態であることが GCM サーバーに認識されているかどうかを確認する方法はありますか?

collapse_key を使用せずに delay_while_idle を使用する方法はありますか?

このようにphpでメッセージをセットアップすると、機能します。

$headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . $key);
$data = array(
    'registration_ids' => $deviceRegistrationIds,
    'data' => array('message' => $messageText,
        'msgfromname' => $fromname,
        'close' => $close,
        'newchat' => $newchat,
        'msgfrom' => $from)
);

このように delay_while_idle を使用すると機能しません。

$headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . $key);
$data = array(
    'registration_ids' => $deviceRegistrationIds,
    'collapse_key' => $messageText,
    'delay_while_idle' => true,
    'data' => array('message' => $messageText,
        'msgfromname' => $fromname,
        'close' => $close,
        'newchat' => $newchat,
        'msgfrom' => $from)
);

これは、$messageText がデータ配列内の何かと同じ値を持っているためだと思いますか? 値を「hello」に変更すると、機能します。

4

2 に答える 2

1

私が見ることができる唯一のことは、$messageText と他のすべての文字列を二重引用符で囲む必要があるということです。また、delay_while_idle を true ではなく 1 に設定しました。true を渡すと 1 に変換されるはずです。

また、collapse_key を正しく使用しているとは思いませんが (設定している実際のデータがわからないとわかりません)、通常はそのフィールドを「バッチ ID」として使用します。

$headers = array("Content-Type:" . "application/json", "Authorization:" . "key=" . $key);
$data = array(
    'registration_ids' => $deviceRegistrationIds,
    'collapse_key' => "$messageText",
    'delay_while_idle' => 1,
    'data' => array('message' => "$messageText",
        'msgfromname' => "$fromname",
        'close' => "$close",
        'newchat' => "$newchat",
        'msgfrom' => "$from")
);
于 2012-08-28T13:54:38.120 に答える
1

collapse_key を指定せずに、delay_while_idle を true に設定できます。

GCM は、一度に最大 4 つの折りたたみキーのみをサポートします。デバイスがオフラインのときに 4 つ以上の折りたたみキーを使用すると、4 つのメッセージのみが保持され、どの 4 つになるかは保証されません。

メッセージ テキストを折りたたみキーとして使用すると、GCM は 4 つの一意のメッセージしか保持できず、最終的に配信される 4 つのメッセージを知る方法はありません。

(ところで、collapse_key を使用したい場合は、time_to_live 値も指定する必要があると確信しています。そうしないと、リクエストが拒否されます。)

于 2012-10-31T22:10:56.390 に答える