0

PHP サーバーから GCM メッセージを送信する方法に関する投稿をいくつか見ましたが、うまくいきません。これは私のコードです:

public function test_gcm($id_user){

    // Search user's RegIds and stores them in $regids

    if(count($regids) == 0){
        echo "This user has no registered device.";
        return;
    }

    $ch = curl_init();

    $data = array(
        'data' => array('message'=>'my message', 'title'=>'message title'),
        'registration_ids' => $regids
    );      

    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // WRITE JSON HEADERS
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Authorization:key=' . $apiKey)
    );

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $result = curl_exec($ch);

    curl_close($ch);

    echo $result;
}

ブラウザキーを使用しています。サーバーキーも試しましたが、どれも機能せず、curl_exec は常に false を返します。なぜだか知っている人はいますか?

編集:「netstat -tuanc |」を使用しました。サーバーで grep 173' を実行し、サーバー呼び出しを実行しました。android.googleapis.com に ping を実行すると、この IP アドレスに ping が実行されるため、grep 173 を使用しています。curl_exec を使用すると、netstat はその IP アドレスへの接続を表示しませんでした。android.googleapis.com に接続していないということですか? または、私がしていることは間違っていますか?

ありがとう!

4

4 に答える 4

1

「メッセージ」の内容がAndroidコードと同じかどうかを確認してください。'message'=>'my message' は、Android の IntentService クラスからのメッセージと一致する必要があります。

于 2012-09-20T08:52:49.197 に答える
0

私はそれを修正することができました。これはファイアウォールの問題で、ファイアウォールが接続をブロックしていました。これらのメッセージを受け入れるルールを追加したところ、機能するようになりました。

助けようとしたすべての人々に感謝します:)

于 2012-09-20T17:06:54.973 に答える
0

https から http に変更してみてください。

curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');

curl_setopt($ch, CURLOPT_URL, 'http://android.googleapis.com/gcm/send');
于 2012-10-05T15:34:55.367 に答える
-1

これを試してくださいhttp://2mecode.blogspot.hk/2013/01/google-cloud-messaging-php.html

それがあなたを助けることを願っています

于 2013-01-02T05:06:15.450 に答える