C2DM:如何处理第 3 方 php 服务器中的注册 ID?

Posted

技术标签:

【中文标题】C2DM:如何处理第 3 方 php 服务器中的注册 ID?【英文标题】:C2DM: What to do with registration id in the 3rd party php server? 【发布时间】:2012-02-19 14:56:41 【问题描述】:

我已经为 C2DM 设置了 android 部分,下面是部分代码:

private void handleRegistration(Context context, Intent intent) 
 // (...)

    else if (registration != null) 
        Log.d("c2dm", registration);
        Editor editor = context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
        editor.putString(REGISTRATION_KEY, registration);
        editor.commit();
        // Send the registration ID to the 3rd party site that is sending
        // the messages.
        // This should be done in a separate thread.
        // When done, remember that all registration is done.
    

所以它说将注册 ID 发送到我的服务器。我该怎么办,如何在 php 中发送消息?

代码示例会很棒,因为我对 PHP 不是很有经验。我见过this 的回答,但它使用了我没有使用的会话。

【问题讨论】:

【参考方案1】:

您需要将其保存到 mysql 之类的数据库中,以便稍后在您想要推送到设备时访问它。

然后你会像这样发送它

include("class.c2dm.php");
$c = new C2DM();
$c->setUsername('appemail@gmail.com');
$c->setPassword('emailpassword');
$c->setSource('com.company.app.package');

$c->setAuthCode($c->getAuthCode());

$regid = "longdeviceid"; //this is the device you want to push to. pull from your database.


$response = $c->send($regid, 'TRACK', array('action' => 'start_tracking'));

echo $response;

在此处获取 class.c2dm.php: https://bitbucket.org/Dianoga/php-c2dm/src/0c299de8f10b/class.c2dm.php

【讨论】:

所以如果我想通知所有用户我将不得不调用send 方法n 次? 是的。你必须做指数退避。因此,如果 Google 说“等等,我很忙”,您必须等待 x 时间才能发送更多信息。 还有一件事:如何使用 class.c2dm.php 发送自定义消息?我想发送随之改变的事物的 ID,以便应用程序可以选择是否获取数据。 $response = $c->send($regid, 'TRACK', array('action' => 'start_tracking')); 上面写着 TRACK 您可以将其更改为您的 ID 以及数组 'action' => 'start_tracking' 中的任何其他内容,所以它可能看起来像这样:$response = $c->send($regid, '1', array('action' => 'update_news_feed'));跨度>

以上是关于C2DM:如何处理第 3 方 php 服务器中的注册 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 Parse.com 将 HTTP 错误转换为 NSError?

PHP XML RPC - 如何处理返回的数组

#yyds干货盘点# 如何处理消费过程中的重复消息?

android c2dm中的推送通知

使用 OAuth2.0 和 PHP 的 C2DM(ClientLogin 已弃用!)

电商场景下,如何处理消费过程中的重复消息?