我需要使用Azure将推送通知发送到iOS设备。我添加了Notification Hub
和p12
证书。
这是我的node.js
代码:
async function sendPush(token) {
var notificationHubService = azure.createNotificationHubService('hub name','connection string');
// registration is done only once:
notificationHubService.apns.createNativeRegistration(token, ['tag_associated_with_token'], null, callback);
var payload = {
alert: 'Hello!'
};
// send notification to all registered devices:
notificationHubService.apns.send(null, payload, null, function(error, response){
if(!error){
console.log('notification sent:');
console.log(response);
}
else {
console.log('error ');
console.log(error);
}
});
}
一切似乎都可行。我获得了成功的注册,列出我的注册后,我可以看到它在那里。发送通知的响应为success
:
{ isSuccessful: true,
statusCode: 201,
body: '',
headers:
{ 'transfer-encoding': 'chunked',
'content-type': 'application/xml; charset=utf-8',
server: 'Microsoft-HTTPAPI/2.0',
date: 'Wed, 17 Jul 2019 12:43:40 GMT',
connection: 'close' },
md5: undefined
}
就是这样。看起来一切都很好。但是设备没有收到通知。
设备令牌正确。该应用程序允许通知。在Azure门户中设置证书时,我同时尝试了production
或'sandbox'。据我所知一切都会正常工作。我还在门户网站本身上尝试了“测试”功能,它报告了success
,但是设备什么也没得到。
我想念什么?
答案 0 :(得分:0)
如果正在开发中,则在wifi网络上使用电话。在这种情况下,您可能需要检查路由器是否阻止了Apple用于APS沙箱的异常端口。如果是这种情况,您可能想要尝试转发端口:21955223。您也可以尝试同时关闭wifi并尝试使用蜂窝网络。
希望有帮助。
答案 1 :(得分:0)
您需要在“ aps”对象中使用“ alert”键。
var payload = {
"aps" : {
"alert" : 'Hello!'
}
}
};
Apple的reference page for remote notifications当然有更多细节。
答案 2 :(得分:0)
据我所知,iOS应用程序在其推送通知中需要正文和标题。
无论如何,您是否使用xcode在iOS应用中的调试模式下对其进行了测试?还是只有手动测试?
您是否使用相同的通知格式对它们进行测试?
设备正在使用其他库获取通知
请检查这些JSON格式
{
“aps” : {
“alert” : {
“title” : “Game Request”,
“subtitle” : “Five Card Draw”
“body” : “Bob wants to play poker”,
},
“category” : “GAME_INVITATION”
},
“gameID” : “12345678”
}