C2DMプッシュ通知を使用するAndroidアプリケーションを作成していますが、メッセージの送信にc2dmを使用するphpコードの作成に問題があります。phpコードを使用して送信する方法を教えてください。メッセージ。実際には、これに関してクライアント認証トークンを取得する方法に問題があります。 http://code.google.com/Android/c2dm/index.html#server urlを見ましたが、これによると、私はAndroidアプリケーションを作成し、登録IDも取得し、ユーザーにも送信しますが、サーバーがこれを使用してアプリケーションを送信する方法を説明します。
Androidデバイスからのサーバーがメッセージを送信するために必要なものはありますか?.
独自のサーバーシステムを登録し、承認トークンを取得するには(これは、Cpt。Ohlundが提案したものです)。
function googleAuthenticate($username, $password, $source="Company-AppName-Version", $service="ac2dm") {
session_start();
if( isset($_SESSION['google_auth_id']) && $_SESSION['google_auth_id'] != null)
return $_SESSION['google_auth_id'];
// get an authorization token
$ch = curl_init();
if(!ch){
return false;
}
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
$post_fields = "accountType=" . urlencode('HOSTED_OR_GOOGLE')
. "&Email=" . urlencode($username)
. "&Passwd=" . urlencode($password)
. "&source=" . urlencode($source)
. "&service=" . urlencode($service);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// for debugging the request
//curl_setopt($ch, CURLINFO_HEADER_OUT, true); // for debugging the request
$response = curl_exec($ch);
//var_dump(curl_getinfo($ch)); //for debugging the request
//var_dump($response);
curl_close($ch);
if (strpos($response, '200 OK') === false) {
return false;
}
// find the auth code
preg_match("/(Auth=)([\w|-]+)/", $response, $matches);
if (!$matches[2]) {
return false;
}
$_SESSION['google_auth_id'] = $matches[2];
return $matches[2];
}
電話にメッセージを送信するには:
// $msgType: all messages with same type may be "collapsed": if multiple are sent,
// only the last will be received by phone.
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);
return $response;
}
Android C2DMを使用して、ブログで例を作成しました。ZendFrameworkと、作成したカスタムコンポーネントを使用しています。これにより、必要な基本情報が得られます。 Android PHPでのC2DM実装を処理します。
Android C2DM PHP w/Zend Framework: http://blog.digitalstruct.com/2010/11/21/Android-c2dm-with-php-and-zend-framework /
よろしく、
マイク
これをチェックしてください: http://www.toppa.com/2010/google-clientlogin-php-example/ それ以外の場合は、今週後半にC2DMを試すため、折り返しご連絡します。
C2DMは正式に非推奨になっているため( google c2dm )
次のリンクで説明されているように、新しいGCM APIを使用することをお勧めします。 GCM Php実装