0

这是我的第一篇文章,对不起我的英语

大家好。我是 PHP 的新程序员,我想使用 Zend Mobile Framework 来实现我的推送通知服务器。

我正在寻找如何实现中使用的tomcat项目

http://developer.android.com/guide/google/gcm/demo.html

但用 PHP 编写。

在下面的代码中,我编写了使用的源代码。当我调用提交按钮时,总是有 InvalidRegistration 错误的响应。

任何人都可以看到错误在哪里?

非常感谢您

http://pastebin.com/MauzLX71

4

2 回答 2

1

根据 Android GCM 的架构概述,您在以下情况下会遇到 invalidRegistration 错误:

无效的注册 ID 检查您传递给服务器的注册 ID 的格式。确保它与手机在 com.google.android.c2dm.intent.REGISTRATION 意图中收到的注册 ID 匹配,并且您没有截断它或添加其他字符。当错误代码为InvalidRegistration时发生。

请在此处查看官方 GCM 文档。

于 2012-07-08T19:29:27.357 回答
0

您可能在这里发生的一件事是:

  • 您的代码实际上正在处理并尝试在您调用 sendPush 之前发送消息,这可能会导致部分问题。
  • 您是否注册了 API 密钥并替换了代码中的那部分?
  • 在演示客户端应用程序中;它展示了如何实际利用注册;请参阅我对以下 GitHub 问题的评论:https ://github.com/mwillbanks/Zend_Mobile/issues/16
    • 您的服务器需要从设备获得注册 ID;这可能是您没有的。
    • 获取注册 ID 的一种方法是在客户端应用程序内的 onRegistered 调用中执行 Log.i("MY_APP_TAG", regId); 然后查看 logcat 输出。

安卓示例

public class GCMIntentService extends GCMBaseIntentService {

    public GCMIntentService() {
        super(Constants.SENDER_ID);
    }

    @Override
    protected void onRegistered(Context context, String regId) {
        Log.i("MY_APP_TAG", "Registered: " + regId);
    }

    @Override
    protected void onUnregistered(Context context, String regId) {
        // write a call here to send the regId to your server and unregister it
    }

    @Override
    protected void onMessage(Context context, Intent intent) {
        Log.i("MY_APP_TAG", "Received message!");
        // grabbing data looks like the following; the assumption
        // is title is part of the data string.
        String title = intent.getExtras().getString("title");
    }

}

*Zend_Mobile_Push_Gcm 示例*

请参阅我提供的粘贴代码的更新链接 (http://pastebin.com/NhrD5N6i);您将需要在文本框中使用上面的注册 ID。

于 2012-07-09T12:47:02.030 回答