使用Azure和Node.js将APNS推送发送到iOS无法正常工作

时间:2019-07-17 13:00:16

标签: ios node.js azure azure-notificationhub

我需要使用Azure将推送通知发送到iOS设备。我添加了Notification Hubp12证书。

这是我的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,但是设备什么也没得到。

我想念什么?

3 个答案:

答案 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”
}