仅使用 Azure 移动服务 .Net 后端进行推送

Posted

技术标签:

【中文标题】仅使用 Azure 移动服务 .Net 后端进行推送【英文标题】:Using Azure Mobie Service .Net backend for push only 【发布时间】:2014-09-16 03:22:06 【问题描述】:

我正在为推送和许多其他工作制作 Azure 后台工作者角色。

与 Azure Push Notification Hub example 发送原始 JsonPayload 字符串不同,Azure 移动服务(a.k.a ZUMO)库为推送提供了更简洁方便的功能。

例如this document介绍如何发送GCM推送如下。

GooglePushMessage message = new GooglePushMessage();
message.Data.Add("greeting", "Hello World!");
message.DelayWhileIdle = true;
message.TimeToLiveInSeconds = 60 * 60 * 2;
message.Add("myKey1", "myValue");
await Services.Push.SendAsync(message);

简而言之,我想使用GooglePushMessage : Microsoft.WindowsAzure.Mobile.Service.Notifications.IPushMessage 类来发送推送。它看起来对 ios 和 WNS 也很有用。

我的问题是,Services 需要初始化,但很难找到应该给出哪些配置。 Azure 门户中自动生成的示例源提供了许多 MS_ 设置,这些设置在 web.config 中可能对我有用,也可能不可用。

Services的基本初始化代码可能如下所示,但如何正确操作呢?

ConfigOptions options = new ConfigOptions();
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));
ApiServices Services = new ApiServices(config);

【问题讨论】:

【参考方案1】:

您可以使用来自 NuGet 的服务总线库。它有一个命名空间,用于管理通知中心并使用特定于平台的通知类或更通用的方法(用于模板)发送通知。http://msdn.microsoft.com/en-us/library/azure/microsoft.servicebus.notifications.aspx

我承认它目前没有那么多好的辅助方法,但它比 JSON 字符串要好一点。

我建议使用带有通知中心的模板,特别是如果您希望拥有多个客户端平台,因为它使您能够发送原始数据并让客户通过他们的模板决定他们希望如何接收该数据以及显示它。例如,您可能让 android 将消息作为警报处理,然后让 IOS 显示徽章或在通知中心放置通知。在 Windows/WinPhone 上,您可以使用发送到通知中心的相同原始数据进行磁贴更新或 toast。

在许多情况下,Azure 移动服务只能在托管在 Azure 移动服务中工作,因为它们的运行时会为您注入其中的一些服务。有可能你可以让它工作,但它曾经/打算在 Azure 移动服务中托管。这是增值的一部分。

话虽如此,您可以设置 Azure 移动服务并让它只托管推送通知方面。然后,您可以通过自定义 API(只需添加一个常规 ASP.NET Web API 控制器)与之交互以调用推送通知。或者将与推送通知相关的计划工作放在移动服务计划工作中,而不是工作人员角色中。

【讨论】:

我喜欢你最后的想法,即使用简单的 AMS 来利用简单的推送集成。但是,如果您使用 Node/javascript 后端,则无需任何 WebAPI 工作即可更轻松地调用 REST API。

以上是关于仅使用 Azure 移动服务 .Net 后端进行推送的主要内容,如果未能解决你的问题,请参考以下文章

带有 .NET 后端的 Azure 移动服务 - 数据库中已经存在一个对象

使用 URL 模板参数和函数后端进行 Azure API 管理

使用 Azure 将通知从 ASP.Net 页面推送到不同平台

系列视频Azure 移动服务的后端开发

在 Azure 移动应用服务后端将字符串属性反序列化为 Json 对象

移动应用使用 Azure *** 连接到本地后端