【发布时间】:2016-07-02 21:36:16
【问题描述】:
我正在使用 phonegap-plugin-push 向 Android 设备发送推送通知。
我正在尝试弄清楚如何向 iO 发送通知。
我在客户端应用程序中获取令牌的方式与在 Android 中相同:
var push = PushNotification.init({
android: {
senderID: "5993...475"
},
ios: {
alert: "true",
badge: true,
sound: 'false'
},
windows: {}
});
push.on('registration', function(data) {
$.ajax({
url: '/save-token/',
data: {token: data.registrationId},
success: function (json) {
}
});
});
在我得到客户的令牌后,我尝试向他们发送推送通知:
$to = ModelGcmTokens::getInstance()->getToken($userId);
$API_KEY = 'AIzaS...HcEYC346zQ';
$message = array(
'data' => array(
'title' => ($title) ? $title : 'Test!',
'message' => $message
),
'to' => $to
);
$message = json_encode($message);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://gcm-http.googleapis.com/gcm/send");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Authorization:key={$API_KEY}",
"Content-Type:application/json",
));
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
// further processing ....
if ($server_output == "OK") {
return true;
} else {
return false;
}
Google 云消息以 InvalidRegistration 错误响应:
{"multicast_id":4701637331500989392,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
当我用谷歌搜索这个错误时 - 据说我得到了客户的令牌错误。 但我使用与 Android 上相同的 excat 脚本得到它。它适用于 Android。
我看到的唯一区别是令牌的格式:
谁能告诉我如何让推送插件在 iO 上工作? iOs 令牌有什么问题,我应该如何向 GCM 发送消息以供 iOs 接收?
非常感谢您的任何建议。我真的被困住了。
【问题讨论】:
-
Apple push 有不同的环境用于发送推送,一种用于开发,一种用于生产。如果您获得 dev 令牌并将其发送到 prod 环境,反之亦然,那么它将无法工作。您知道您尝试将推送发送到 iOS 的环境吗?
-
好吧,我得到了生产密钥并将其发送到生产服务器
-
我真的不明白如何获得“生产”或“开发”令牌。我通过插件的魔力得到它们,当它向 GCM 服务器发送一些信号并从那里获取令牌时。它是什么令牌——我不知道。但应该是生产,因为我已将生产 p12 密钥上传到 GCM 服务器。
标签: ios iphone cordova phonegap-plugins phonegap-pushplugin