通过通知中心向所有用户发送推送通知
Posted
技术标签:
【中文标题】通过通知中心向所有用户发送推送通知【英文标题】:Send push notification via notification hub to all users 【发布时间】:2018-03-18 19:26:15 【问题描述】:我一直试图弄清楚如何在我的 asp.net web api 中发送推送通知。我看到有多种方法可以通过设备本身和后端在集线器中注册设备。我想使用第一种方法,并找到了一些教程,但我不知道如何从后端发送请求。我尝试了以下代码,但它给了我 401 Unauthorized 错误:
[HttpGet]
public async Task<HttpResponseMessage> NotTry()
NotificationOutcome outcome;
HttpStatusCode ret = HttpStatusCode.InternalServerError;
string notif = " \"data\" : \"message\":\"hello\"";
outcome = await Notifications.Instance.Hub.SendGcmNativeNotificationAsync(notif);
if (outcome != null)
if (!((outcome.State == NotificationOutcomeState.Abandoned) ||
(outcome.State == NotificationOutcomeState.Unknown)))
ret = HttpStatusCode.OK;
return Request.CreateResponse(ret);
如果有人能给我一个方向,我将不胜感激。我正在失去理智寻找解决方案......
【问题讨论】:
【参考方案1】:但我不知道如何从后端发送请求。我尝试了以下代码,但它给了我 401 Unauthorized 错误
根据您的描述,您正在使用 Microsoft.Azure.NotificationHubs 进行 Microsoft Azure 通知中心后端操作。
NotificationHubClient Hub = NotificationHubClient.CreateClientFromConnectionString("<your hub's DefaultFullSharedAccessSignature>","<hub name>");
await hub.SendGcmNativeNotificationAsync("payload");
我建议您在通过方法CreateClientFromConnectionString
构造NotificationHubClient
时检查通知集线器连接,并确保连接字符串具有正确的完全访问权限。您可以使用上面的 nuget 包创建一个控制台应用程序来发送通知,并使用 fiddler 来捕获详细的错误响应以缩小此问题的范围。此外,您可以关注Diagnose dropped notifications in Notification Hubs。
【讨论】:
我可以发誓我没有改变任何东西,我只是删除了连接字符串(我确信这是正确的)并重新输入它们,神奇地它起作用了。还是谢谢。 很高兴听到您解决了这个问题。对于401,表示你的凭证不正确,默认生成DefaultFullSharedAccessSignature
策略。也许您之前的连接字符串有其他无效字符。以上是关于通过通知中心向所有用户发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章