2016-09-21 147 views
0

我正在编写一个Ionic应用程序并尝试使推送通知正常工作。使用GCM将推送通知发送给Ionic应用程序

我使用的是phonegap-plugin-push插件。

在 “$ ionicPlatform.ready” 事件中,我获得了设备令牌

var push = PushNotification.init({ 
    android: { 
    senderID: "36112019308" 
    } 
}); 

push.on('registration', function(data) { 
    window.localStorage.setItem('tkn', data.registrationId); 
}); 

好,在这里我得到的注册ID。现在,当我尝试按步骤描述here,通过类似以下的

curl --header "Authorization: key={KEY_GOT_ON_GOOGLE_CONSOLE}" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"THE_REGISTRATION_ID_GOT_ON_DEVICE"]}" 

一个curl命令我得到的错误:

{"multicast_id":4787366485826638756,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} 

好了,我相信,钥匙和注册ID是正确的,因为如果我改变的关键,我得到未经授权错误,如果我改变的注册ID,我得到InvalidRegistration错误

有什么事情是我做错了吗?

aditional的信息

  • 测试与调试版本
+0

您是否检查了此帖:http://stackoverflow.com/a/36492797/2549619? – e666

回答

0

我知道了。该错误消息是真的误导。

注册后返回的完全令牌是这样的:

dWWt-ohQFWg:APA91bFBgEU1aRyykLCw2lNat57WSePvbXyiLcCoHh6Tt6dkzXs5HUNl8C4wDL-BgaBrzJJc0lHH8IGQ3zACcfyQEdQmpKTJWOWshWKIH0e_RByg5zkhX0AlvFL4_0DLMzd_Hz1YKZ1g 

出于某种原因,我只用了之后什么来“:”在这种情况下,错误是MismatchSenderId。我确信注册是好的,因为如果我改变了字符串上的任何内容,它会返回InvalidRegistration。但实际上应该使用整个字符串,包括“:”之前的部分。