Pubnub推送通知不适用于跨平台移动应用程序

sum*_*mit 3 android phonegap-plugins cordova pubnub google-cloud-messaging

我们正在开发一个基于cordova的Android应用程序,它具有聊天功能.我们正在从服务器发送测试聊天消息,当应用程序处于前台时,我们收到了消息.

我们希望在应用处于后台时收到有关聊天消息的通知.但是,我们没有收到任何关于聊天消息的推送通知.

我们遵循的步骤如下所述.请告诉我们我们所犯的错误.

当应用处于后台时,我们已将此链接引用以在设备上获取通知.

我们使用cordova PushPlugin注册设备以进行推送通知.并使用以下代码注册设备

 pubnub.mobile_gw_provision ({
     device_id: 'A655FBA9931AB',
     op: 'add',
     gw_type: 'gcm', // or 'apns'
     channel: 'my_chat',
     callback: mySuccessCallback,
     error: myErrorCallback,
 });
Run Code Online (Sandbox Code Playgroud)

如果我们以编程方式发送使用GCM设备ID以使用GCM API从我们的服务器发送推送通知,我们将获得推送通知.

当应用程序在前台时,我们从pushPlugin的onNotificationGCM方法接收来自pubnub的通知警报.

我们还在管理控制台中配置了GCM服务器API密钥并启用了pubnub推送通知.

我使用下面的Python代码发布聊天:

_pubnub = Pubnub(publish_key='our-publish-key',
subscribe_key='our-sub-key')

channel_name = 'here-is-channel-string'
data=dict(
    pn_gcm=dict(data=dict(
        title_for_mobile='PN',
        summary_for_mobile=['Hi, test']
        )
    ),
    text='what is your dob?',
    sender=dict(name='Jon Snow', id='yyyyyyyy'),
    meta=dict(job=dict(id='zzzzzzzz'))
)

_pubnub.publish(channel_name, data)
Run Code Online (Sandbox Code Playgroud)

在应用程序处于后台时获取传入聊天消息的推送通知是我的应用程序的关键功能.

请让我知道我做错了什么?

sum*_*mit 5

在Pubnub的支持下,我也就此提出了支持请求.在Pubnub的一些人回复之后,我们得以解决它.

我们被这个文档误导了,我们正在使用

"pn_gcm": {
  "data": {
      "title_for_mobile": "Test",
      "summary_for_mobile": [ "Hi" ]
   }
}
Run Code Online (Sandbox Code Playgroud)

相反,我们应该使用.

{
  "message": "This is some text",
  "pn_gcm": { 
     "data": {
         "title": "Demo wpush", 
         "message":"This is a pushnotification"
     }
   },
   "pn_debug": "true"
} 
Run Code Online (Sandbox Code Playgroud)

因为Cordova PushPlugin正在期待message关键GCM.

// GCMIntentService.java
@Override
protected void onMessage(Context context, Intent intent) {
    //.... some code ...
    if (extras.getString("message") != null && extras.getString("message").length() != 0) {
          createNotification(context, extras);
    }
    //... some code ...
Run Code Online (Sandbox Code Playgroud)