在php中实现推送通知服务器

时间:2012-07-08 19:19:50

标签: push-notification google-cloud-messaging

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

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

我正在搜索如何实现

中使用的tomcat项目

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

但用PHP编写。

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

任何人都可以看到错误的位置吗?

非常感谢

http://pastebin.com/MauzLX71

2 个答案:

答案 0 :(得分:1)

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

  

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

请查看GCM正式文件here

答案 1 :(得分:0)

您可能遇到的一件事情如下:

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

Android示例

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。