Azure 移动应用程序:无法从我的 nodeJS 后端发送推送通知

Posted

技术标签:

【中文标题】Azure 移动应用程序:无法从我的 nodeJS 后端发送推送通知【英文标题】:Azure mobile apps: can't send push notifications from my nodeJS back-end 【发布时间】:2017-02-27 15:04:53 【问题描述】:

首先,我要澄清的是,我仅在 Azure 端使用免费模块和服务计划,使用 Bizspark 订阅。

我目前正在尝试在以下教程中运行该应用程序:

https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-started-push

一切都在客户端运行,项目被正确发送并存储在数据库中。但是,我不能让 NodeJS 服务器向设备发送推送通知。 我基本上复制并粘贴了教程中nodeJS后端的代码,重新部署/重新启动了服务器,但没有发送任何推送通知。

我试图查看代码中哪里出了问题,所以我到处使用了一些 logger.info。然后我发现 context.push 是未定义的。

但是,我确实将移动应用程序连接到 Azure 移动应用程序菜单中“推送”类别中的通知中心(它确实显示为已连接)。

Push page on my mobile app

谷歌云消息也配置正确,启动应用时收到注册成功的推送通知。

我错过了什么?是因为我使用的是免费计划(通知中心、数据库、服务计划)吗?

【问题讨论】:

【参考方案1】:

首先,您可以测试通过 Azure 门户发送通知,为此,请参阅以下步骤。

    转到 Azure 门户并导航到您的通知中心。 点击支持+疑难解答菜单下的测试发送。 选择您使用的平台,然后填写payload消息并点击发送按钮。

几乎立即(但实际上,由于 PNS 延迟可能需要几分钟),您将在您的应用程序上看到推送通知警报。

对于 Azure 移动应用程序上的 node.js 后端,您可以使用以下代码行向所有注册的客户端发送推送通知。

var payload = 
  data: 
    message: 'Hello!'
  
;
notificationHubService.gcm.send(null, payload, function(error)
  if(!error)
    //notification sent
  
);

欲了解更多信息,请查看this tutorial。

【讨论】:

【参考方案2】:

我确实尝试了几次测试发送,它运行良好,因此我无法理解它是如何无法运行的。当我在 Azure 上使用基本的后端 nodeJS 服务器时,我无法使用与 @aaron-chen-msft 完全相同的代码(快速入门服务器,因此我需要安装“azure”npm 包),但我添加了将以下字符串添加到我在 Azure 上的移动应用程序设置(应用程序设置选项卡):

键:MS_NotificationHubName 值:MyNotificationHubName(此处为 Poke-Forgh)

Context.push 没有未定义,但通知没有发送,所以我受到 @aaron-chen-msft 代码的启发,我编辑了 nodeJS 代码以专门向 GCM 发送通知:

 context.push.gcm.send(null, payload, function (error)  ... 

它终于奏效了。谢谢!

【讨论】:

以上是关于Azure 移动应用程序:无法从我的 nodeJS 后端发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

是否可以仅使用用户从我的 .net 核心应用程序登录 Azure 并通过?

无法将 100K jpg 从我的根目录移动到另一个文件夹 [重复]

使用 reactjs(非本机)从我的网站创建一个移动应用程序

如何从 Azure 移动应用服务调用 HTTP(Azure Functions)?

JavaScript Azure Blob 存储移动 blob

azure 删除从我的应用服务返回的 Access-Control-Allow-Origin 标头