无法将 Azure NotificationHub 推送消息从 .NET 控制台应用程序传送到(Android)设备

Posted

技术标签:

【中文标题】无法将 Azure NotificationHub 推送消息从 .NET 控制台应用程序传送到(Android)设备【英文标题】:Failing to deliver Azure NotificationHub push messages to (Android) devices from .NET console app 【发布时间】:2016-03-09 19:36:19 【问题描述】:

我已使用较新的 Azure 门户中的“快速启动”说明配置了 .NET 应用服务,以发布应用服务以用作我的移动后端。我还为它配置了一个通知中心,并且能够通过 Azure 移动后端端点从 Xamarin.Forms android 应用程序发送推送通知。我也可以在已注册的 Android 设备上接收推送通知。

我需要能够从 C# 控制台应用程序向注册设备发送推送通知,但无论我尝试什么,推送消息都不会传递。

我正在使用以下代码尝试发送推送消息。当我运行它时,执行结束于...

 var result = await hub.SendTemplateNotificationAsync(templateParams);

...控制台应用程序在不等待响应的情况下终止,并且推送通知永远不会发送到注册的设备。

public async void PushSmartAlerts()

    string notificationHubName = "DevXXXXNotificationHub";
    string notificationHubConnection = "Endpoint=sb://devXXXXXnotificationhubnamespace.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=SnXXXXXXXXXXXXXXXXXXXXXXXX9N8=";
    hub = NotificationHubClient .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    Dictionary<string, string> templateParams = new Dictionary<string, string>();
    templateParams["messageParam"] = "Hello";
        var result = await hub.SendTemplateNotificationAsync(templateParams);

谁能告诉我哪里出了问题,或者我的做法是否错误?

【问题讨论】:

【参考方案1】:

解决了。我使用 NotificationHubClient 创建和发送通知的方式没有任何问题。它不起作用的原因是控制台应用程序不支持 Main 方法中的await,因此在发送推送通知之前执行就结束了。通过将代码更改为以下代码,推送通知已发送并传递。

   string notificationHubName = "xxxxxxx";
    string notificationHubConnection = "Endpoint=sb://xxxxxx";
     hub = NotificationHubClient.CreateClientFromConnectionString(notificationHubConnection, notificationHubName, true);
    Dictionary<string, string> notification = new Dictionary<string, string>()
    
        "messageParam", "It works. Tap to view."
    ;
    var task = hub.SendTemplateNotificationAsync(notification);
    task.Wait();

【讨论】:

以上是关于无法将 Azure NotificationHub 推送消息从 .NET 控制台应用程序传送到(Android)设备的主要内容,如果未能解决你的问题,请参考以下文章

适用于桌面应用程序的 Azure NotificationHub(控制台应用程序)

Azure Notificationhub - PN 发送在沙盒中工作但不在生产中

Azure NotificationHub 发送推送时凭据无效

NotificationHub 在注册标签 UWP 中发送通知

NotificationHub Push Notification 返回:从 Token Provider 获取的 Token 错误

PHP 中的 Azure 通知给单个用户