2012-02-18 10 views
1

私はC2DMサーバから登録IDを要求するC2DMクライアントを実装しました。アプリケーションが登録IDを取得すると、アプリケーションはデバイスIDと登録IDをサーバーデータベースに格納します。 PHPサーバを実装しましたが、メッセージを投稿しようとするとError = MissingRegistrationになります。Android C2DMに登録エラーがありませんか?

PHPサーバー・コード

$url = 'https://www.google.com/accounts/ClientLogin'; 

$body = '[email protected]&Passwd=password&accountType=GOOGLE&source=MyLittleExample&service=ac2dm'; 
$c = curl_init ($url); 
curl_setopt ($c, CURLOPT_POST, true); 
curl_setopt ($c, CURLOPT_POSTFIELDS, $body); 
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec ($c); 
$p = explode("Auth=",$page); 
curl_close ($c); 

$url = 'https://android.apis.google.com/c2dm/send'; 

$param = // Get Registration id from my sql 
$mtype = 'important'; 
$msg = 'Hello'; 

$len = strlen($param); 
echo $len; 
function sendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText) { 

     $headers = array('Content-length:300','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); 
     return $response; 
    } 
$data = sendMessageToPhone($p[1],$param,$mtype,$msg); 
var_dump($data); 

ドキュメントエラー= MissingRegistrationによるPOSTリクエストにはREGISTRATION_IDパラメータが存在しない場合に発生します。私も、登録IDをハードコーディングしてアプリケーションを実行しようとしました。どんな助けでも大歓迎です。ありがとうございました。

+0

よく構造化され、明確な質問。私はPHPを知らず、まだ私はすべてを理解することができます。 +1に値する。しかし、まだ問題を探しています。 –

+0

@Borisありがとうございました:) – iNan

答えて

1

Aha!そして、可能な解決策(私が知らない別の言語の通知に関するスレッドから取る)が来る:https://stackoverflow.com/a/8339611/1108032。彼が問題を解決したと言ったことをお読みください。私にとっては、あなたのコードが大丈夫だと思うので、それはあなたに失敗するはずのようなものです。

+0

@おめでとう、まだ苦しんでいます:( – iNan

+0

あなたはこの投稿から何を試しましたか?登録IDを更新するようにデバイスを再度登録しようとしましたか? –

+0

ya私は試しました。フォールトを見つけました、つまり、私はカールのヘッダーを設定すると、ポストパラメーターはサーバーに送信されません。 – iNan

関連する問題