我正在尝试使用Azure Mobile Services Node.js后端使用以下代码注册设备:
var notificationHubService = azure.createNotificationHubService('<HubName>', '<Endpoint>');
var payload = {
alert: 'Hello!'
};
function insert(item, user, request) {
notificationHubService.createRegistrationId(function (error, registrationId, response) {
if (!error) {
notificationHubService.apns.createOrUpdateNativeRegistration(registrationId, item.Token, [item.id], function (error, response) {
if (!error) {
console.log('Inside : createOrUpdateNativeRegistration' + response);
notificationHubService.apns.send(null, payload, function (error) {
if (!error) {
// notification sent
console.log('Success: Inside the notification send call to Hub.');
}
});
}
else {
console.log('Error in registering the device with Hub for Token: ' + item.Token + '>> ' + error);
}
});
}
else {
console.log('Error in generating the registration Id' + error);
}
});
request.execute();
}
&#13;
但我一直收到以下错误:
编辑:此行导致错误:
notificationHubService.apns.createOrUpdateNativeRegistration
&#13;
Error: 400 - One or more characters in device token is not a hexadecimal
&#13;
令牌是使用客户端上的https://github.com/Telerik-Verified-Plugins/PushNotification cordova插件生成的,这会产生以下令牌:
APA91bGiwjCSslyOjqIP4Cerf5LJFkDYAyVHpT0GdIEQ81z9LJMGkUAV0ScgL9ioOqL38ZFTuFHwQRP389OAOPcOGxp2MZHBbYR6BlL70xIW8jHU1ZsJIdtUoww1mCx4cWqmZzjErZDz
&#13;
我还尝试使用客户端上的https://github.com/phonegap/phonegap-plugin-push cordova插件生成令牌,这会产生以下令牌:
cF3dKfF5j14:APA91bEruizX883Aegix-UPyQHjCgyl1ZfoXoFQUhf3JH_A8W_iITk-SyEsBjnnWlvTgAONEspAkTpy8IonqvL0bYFGGm9jDj-Kbjf3bF_T0LFiQ2fUQIHcP1uHsiby3AcGi-dlL6aP6
&#13;
两个令牌都会导致相同的错误。
非常感谢任何帮助。
答案 0 :(得分:0)
我会问Telerik推送插件开发人员他们为什么会有另一种令牌格式,即他们的令牌之间没有破折号。令牌由FCM,APNS或WNS提供,格式不能因插件而异。
我只会使用 phonegap-plugin-push 中的ID。我经常使用此插件收到的FCM令牌采用以下格式:
eb1-bYqMrQ8:APC97bHXxUTb_dbAK255ew4uvBR8gRDo-1_9RyEX_Be6WiRAy3qS5f1bIEWT2e8FtIBbWj_0x1ep2uo7H8TOG0hGc4Be4hBdx1VPcwn_Mrfbo8NscxjMJZfCZRLbGCE_mGPK_-1_rgh3
我记得我遇到了一些问题,因为当我发送registrationID时,它被AJAX请求更改(缺少破折号或类似的东西),因此您必须进行三重检查以比较您收到的ID和你发送到Azure。