我想创建一个小应用程序来向我的Android设备发送通知。
我制作了一个WPF应用程序和一个Android应用程序,我使用Azure Notification Hub和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)
你能帮助我吗?
答案 0 :(得分:2)
除了您订阅该应用程序的标记之外,您不需要使用任何内容来发送目标推送通知。 当您注册通知中心的应用程序时,它会将其记录放入通知中心后端注册表(您可以从Azure门户或使用Service Bus Explorer访问该表。如果您将应用程序订阅到标签,并发送对该标记的通知,以及应用程序没有收到它,然后查看表中是否有具有相应标记的应用程序。
这是一项很棒的功能,因为您可以在不知道ID或其他任何内容的情况下向用户发送目标通知。 Just subscribe them到该标记。这在平台之间完美运行 - 我们使用该方法为在不同设备和平台上订阅相同标签的用户发送目标通知。
May be相关。如我所见,您不将通知发送到标签(尝试添加到SendGcmNativeNotificationAsync额外参数,如here)。尝试将其发送到确切的标记(您可以从门户网站,Notification Hub仪表板=&gt; DEBUG窗格中执行此操作)。