我尝试在Android中实现C2DM。在注册C2DM服务器后,我可以获得注册码。但是,当我从第三方服务器发送消息时,它会在Log中显示消息“消息已发送”和错误代码200,这意味着第三方服务器已成功发送消息。 BuT我的问题是,我无法在设备中接收消息。如何在android中实现C2DM
0
A
回答
0
此博客http://www.tomasmalmsten.com/tag/c2dm/非常适合启动和运行android c2dm。
0
function googleAuthenticate($username, $password, $source="Company-AppName-Version", $service="ac2dm"){
$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);
$response = curl_exec($ch);
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;
}
return $matches[2];
}
// send message to android, The message size limit is 1024 bytes in android
function c2dmSendMessageToPhone($authCode, $deviceRegistrationId, $msgType, $messageText,$extraArr) {
$headers = array('Authorization: GoogleLogin auth=' . $authCode);
$data1 = array(
'registration_id' => $deviceRegistrationId,
'collapse_key' => $msgType,
'data.msg' => $messageText
);
$data2 = array();
// append 'data' string in key of the array
if(!empty($extraArr)){
foreach($extraArr as $k => $v){
$data2['data.'.$k] = $v;
unset($extraArr[$k]);
}
}
$data = array_merge($data1,$data2);
$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;
}
0
检查这个帖子C2DM Implementation Checklist Step by Step
编码之前包含1米的东西; 2 Android应用程序(客户端); 3服务器端:get ClientLogin等; 4个,注意事项
0
每个人都在调整到这个话题应该了解变化中的谷歌:
C2DM已被弃用,由Google Cloud Messaging for Android (GCM)已被替换。 谷歌的声明:
Important: C2DM has been officially deprecated as of June 26, 2012.
This means that C2DM has stopped accepting new users and quota requests.
No new features will be added to C2DM. However, apps using C2DM will continue to work.
Existing C2DM developers are encouraged to migrate to the new version of C2DM,
called Google Cloud Messaging for Android (GCM).
See the C2DM-to-GCM Migration document for more information.
Developers must use GCM for new development.
有一个demo app tutorial for GCM,也为migration从C2DM。
相关问题
- 1. 如何在android中实现C2DM?
- 2. Android中的C2DM实现
- 3. C2DM PHP实现
- 4. Android C2DM源代码或实现
- 5. Android C2DM需要的简单实现
- 6. C2DM实现PHP代码
- 7. android c2dm编程实例
- 8. 在Android-x86中使用C2DM
- 9. 在android中执行c2dm
- 10. 如何实现CalenderView Android中
- 11. 如何实现在Android
- 12. Appcelerator的 - C2DM在Android
- 13. PHP-C2DM应用服务器实现
- 14. C2DM collapse_key实现需要说明
- 15. 如何在Android中实现webhook?
- 16. 我如何在android中实现SlideShow?
- 17. 如何在Android中正确实现progressBar?
- 18. 如何在android中实现facebook集成?
- 19. 如何在iOS中实现Android的getViewById?
- 20. 如何在android中实现拖放?
- 21. Android - 如何在Kotlin中实现setOnClickListener?
- 22. 如何在Android中实现ListView缓存
- 23. 如何在Android中实现react-native-maps
- 24. 如何在Android中实现这一点?
- 25. 如何在android中实现块
- 26. 如何在Mono中为Android实现GLSurfaceView.IRenderer?
- 27. 如何在Android中实现hashtag视图?
- 28. 如何在android中实现2D图形?
- 29. 如何在android 2.2中实现拖放?
- 30. 如何在Android中实现BroadcastReceiver
非常感谢您的帮助.....这段代码真的很有用... – parmil86