2012-02-20 10 views
1

私はc2dmを使ってアンドロイドでサンプルプッシュ通知アプリを開発しています。ここで私のPHPコードは、サーバーからデバイスにメッセージを送信することです。Push Notification in android c2dm

function sendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText) { 

    $headers = array('Authorization: GoogleLogin auth=' . $authCode); 
    $data = array(
     'registration_id' => $deviceRegistrationId, 
     'collapse_key' => $msgType, 
     'data.message' => $messageText //TODO Add more params with just simple data instead   
    ); 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/send"); 
    if ($headers) 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 


    $response = curl_exec($ch); 

    curl_close($ch); 

} 
sendMessageToPhone("my application server auth token ","my device id","UTF-8","hello"); 

「情報なし」と表示されています。私のエミュレータの通知。どこが間違っているの?私を助けてください。

+0

cURLリクエストの実行による応答は何ですか?エミュレータがC2DMメッセージを受信するために登録されている(つまり、Googleアカウントに関連付けられていますか)。そのマニフェストにC2DMアクセス許可を含めましたか? Androidのどのバージョンですか? –

+0

私はPHPには初めてです。 $ responseを返したら、私はいくつかのリソースIDを取得しています。そして、すぐに私はエミュレータで通知を取得しています。マニフェストにすべての権限を含めました。 2.2 – AndroidRaji

+0

を使用するJavaアプリケーションサーバーからメッセージを送信するときに正しい通知を受け取っています。 (Javaアプリケーションサーバーの認証トークンを使用) – AndroidRaji

答えて

1

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://android.apis.google.com/c2dm/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: GoogleLogin auth=$token", "Content-Length: $len", "Content-Type: application/x-www-form-urlencoded"));
echo curl_exec($ch);
curl_close($ch);

これは私のアプリは$データは、データの配列であるC2DMメッセージを送信するために使用するPHPコードです。 Content-Lengthは必須であり、データの長さです。

EDIT:何か便利なものがあるかもしれませんが、メッセージの送信をより良くするためにはclassをphpにしてください。

関連する問題