1

我目前正在努力通过 Parse 为带有 GCM 的 Android App 实现推送通知。这是我所拥有的和有效的:我按照 GitHub 项目推送通知中的自述步骤 我修改了 registrationHandler 以注册 deviceToken:

var req = {
  method: ‘POST’,
  url: ‘api.parse.com/1/installations’,
  headers: {
    ‘X-Parse-Application-Id’: ‘xxx’,
    ‘X-Parse-REST-API-Key’: ‘xxx’,
    ‘Content-Type’: ‘application/json’
  },
  data: {
    ‘deviceType’: ‘android’,
    ‘pushType’: ‘gcm’,
    ‘deviceToken’: deviceToken,
    ‘GCMSenderId’: senderID
  }
}
$http(req).success(function(){
  alert('Successfully registered');
}).error(function(){
  alert('Error with Registration');
});

我在构建配置中启用了推送通知,并且能够构建和安装 apk。在解析核心模块中,我可以看到已注册的设备。我已将 Google 项目 ID 和 API 密钥添加到 Parse。如果我从安装表中复制 deviceToken 并将其与此 Ruby 脚本一起使用,我会立即收到通知。

require 'rubygems'
require 'pushmeup'

APPLICATION_API_KEY = "API_KEY_GOES_HERE"
DEVICE_REGISTRATION_ID = "REGISTRATION_ID_GOES_HERE"

GCM.host = 'https://android.googleapis.com/gcm/send'
GCM.format = :json
GCM.key = APPLICATION_API_KEY
destination = [DEVICE_REGISTRATION_ID]
data = {:message => "PhoneGap Build rocks!", :msgcnt => "1", :soundname => "beep.wav"}

puts GCM.send_notification( destination, data)

但是如果我从 Parse 发布通知,我不会收到通知。我错过了什么?

编辑 1:同时我查看了 LogCat,发现消息实际上已传递到我的设备,但消息处理过程中出现了问题:

D/JsMessageQueue﹕ Enqueued JsMessage: {"from":"123456789","collapse_key":"do_not_collapse","payload":{"data":{"alert":"Testing for UUID","push_hash":"c1a7d096f1157109a590dbade5670dcd"}},"foreground":true,"coldstart":false,"timestamp":"2015-05-19T07:57Z","uuid":"f00dfc28-ef88-411c-b12d-f3eb5dba230b"}, paused: false
05-19 09:57:48.038  24772-24772/ch.hevs.asd D/JsMessageQueue﹕ Flushed 1 messages to JS side.
05-19 09:57:48.038  24772-28185/ch.hevs.asd V/GCMBaseIntentService﹕ Releasing wakelock
05-19 09:57:48.058  24772-24772/ch.hevs.asd I/chromium﹕ [INFO:CONSOLE(1044)] "processMessage failed: Error: SyntaxError: Unexpected token u", source: http://localhost/cordova.js (1044)
05-19 09:57:48.078  24772-24772/ch.hevs.asd I/chromium﹕ [INFO:CONSOLE(1045)] "processMessage failed: Stack: SyntaxError: Unexpected token u
            at Object.parse (native)

编辑 2:好的,我调试了传入的推送通知,我从这两种方法收到的 JSON 是不同的。所以我认为 Cordova 的 PushPlugin 无法处理 Parse.com 的 JSON

来自红宝石的消息:

S11 PushPlugin1887095744 
{"soundname":"beep.wav",
"msgcnt":"1",
"from":"12345678",
"message":"PhoneGap rocks!",
"collapse_key":"do_not_collapse",
"payload":{},
"foreground":false,
"coldstart":false,
"timestamp":"2015-05-19T08:29Z",
"uuid":"af6605e0-1efb-4c8a-82de-d8858b2ec725"}

来自 Parse 的消息

S11 PushPlugin1887095744 
{"from":"12345678",
"collapse_key":"do_not_collapse",
"payload":{
"data":{"alert":"lets debug this PoS",
"push_hash":"1edebeb8864bc06682c10f1be1058164"}},
"foreground":false,
"coldstart":false,
"timestamp":"2015-05-19T08:25Z",
"uuid":"df575996-c039-4f5b-8120-147fb47911c9"}
4

0 回答 0