Android 上的 Azure 通知中心。如何发送给特定用户?

Posted

技术标签:

【中文标题】Android 上的 Azure 通知中心。如何发送给特定用户?【英文标题】:Azure Notification Hub on Android. How to send to specific user? 【发布时间】:2016-05-10 15:48:36 【问题描述】:

我想创建一个小应用程序来向我的 android 设备发送通知。

我制作了一个 WPF 应用程序和一个 Android 应用程序,并使用 Azure 通知中心和 GCM 进行通知。

我可以为我的所有 android 设备发送通知,但不能为一个设备发送通知。

我来这里是为了得到你的帮助。

我的 WPF 应用程序是这样工作的:

 private async void SendNotificationAsync()
     
        var hub = NotificationHubClient.CreateClientFromConnectionString(Keys.FullConnectionString, Keys.NotificationHubName);
        if (!string.IsNullOrEmpty(TxtTo.Text)) 
            await hub.SendGcmNativeNotificationAsync(
                    "'to': '" + TxtTo.Text + "', 'data':  'message': '" + TxtMessage.Text + "', 'title': '" + TxtTitle.Text + "'  ");
        else
        
            await hub.SendGcmNativeNotificationAsync(
                    "'data':  'message': '" + TxtMessage.Text + "', 'title': '" + TxtTitle.Text + "'  ");
        
    

我的问题是这样的:

我不明白如何获取 Android ID 设备注册,或者,这是我使用 OnRegistered 方法生成的 RegistrationId:

 protected override void OnRegistered(Context context, string registrationId)
    
        Log.Verbose(MyBroadcastReceiver.TAG, "GCM Registered: " + registrationId);

        RegistrationId = registrationId;
        ChangeTextID(registrationId);

        Hub = new NotificationHub(Keys.NotificationHubName, Keys.ListenConnectionString, context);

        try
        
            Hub.UnregisterAll(registrationId);
        
        catch (Exception ex)
        
            Log.Error(MyBroadcastReceiver.TAG, ex.Message);
        

        var tags = new List<string>();

        try
        
            Hub.Register(registrationId, tags.ToArray());
        
        catch (Exception ex)
        
            Log.Error(MyBroadcastReceiver.TAG, ex.Message);
        
    

但如果我使用此 ID 发送通知(在我的 WPF 应用程序中)它就不起作用(替换 TxtTo.Text)

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

您不需要使用任何东西来发送有针对性的推送通知,除了您订阅该应用程序的标签。 当您为通知中心注册应用程序时,它会将其记录放入通知中心后端注册表(您可以从 Azure 门户或使用 Service Bus Explorer 访问该表。如果您为应用程序订阅了标签,并发送通知到那个标签,而应用程序没有收到它,那么看看你的表中是否有那个带有适当标签的应用程序。

这是一个很棒的功能,因为您可以在不知道用户 ID 或其他信息的情况下向用户发送有针对性的通知。 Just subscribe them 到那个标签。这在平台之间非常有效 - 我们使用这种方法为在不同设备和平台上订阅相同标签的用户发送有针对性的通知。

May be 相关。如我所见,您将通知发送到标签(尝试添加到 SendGcmNativeNotificationAsync 额外参数,如here)。尝试将其发送到确切的标签(您可以从门户、通知中心仪表板 => 调试窗格中执行此操作)。

【讨论】:

以上是关于Android 上的 Azure 通知中心。如何发送给特定用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google FCM 和 Microsoft azure 作为托管服务器从 chrome for android 上的 PWA 发送推送通知

适用于 Apple 和 Android 的 Azure 通知中心

适用于 Android 的 Azure 通知中心:如何使用后台服务处理数据消息?

Azure 通知中心的 Xamarin.Forms PushNotifications

通过 Azure 通知中心跟踪 PNS 传递

Azure 通知中心延迟问题