0

アプリケーションを C2DM サービスから新しい GCM プッシュ通知に移行しようとしています。GCMBaseIntentService を拡張する GCMIntentService クラスの統合に成功しました。PHP を使用してサーバーからプッシュ通知を送信すると、GCM はメッセージ データを JSON オブジェクトとして送信します。Android GCM サービスで次のコードを使用しており、新しいコードで null 値を返しています。

public void onMessage(Context context, Intent intent)
    {
        String action = intent.getAction();     
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action))   {            
             message=intent.getStringExtra("message");                                  
            createNotification(context);
        }
   }

PHP スクリプトには以下が含まれます。

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

// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $url );

curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

GCM ライブラリを使用し、JSON を使用せずにプッシュ通知を送信するために PHP スクリプトに必要なすべての変更を教えてください。

前もって感謝します ティム

4

2 に答える 2

0

JSON経由でペイロードを送信する必要があります-JSONを使用したくない理由は何ですか?

于 2012-07-20T10:32:18.287 に答える
0

C2DM と同様に、JSON なしでペイロードを送信することもできます (必要に応じて)。

まず、コンテンツ タイプが次のように変更されます。

Content-Type: application/x-www-form-urlencoded;charset=UTF-8

次に、HTTP ボディには次の内容が含まれます。

registration_id=xxxxxx&collapse_key=yyyyy&data.data1=value1&data.data2=value2

ただし、ペイロードをプレーン テキストとして送信すると、one device at a time. この理由だけでも、変更したくない C2DM コードに一括送信ロジックが既にある場合を除き、このオプションの使用を避ける必要があります。

詳細については、http: //developer.android.com/guide/google/gcm/gcm.html#requestを参照してください。

于 2012-07-20T14:39:09.493 に答える