我尝试注册标签,用于将推送通知发送到基于标签的特定标签,但在使用标签基础发送过程时推送不起作用。在azure推送通知集线器中注册标签存在问题。以下是我尝试过的示例。
示例代码:
var tags = new List<string> { userId };
AppDelegate.Hub?.UnregisterAllAsync(AppDelegate.DeviceToken, error =>
{
if (error != null)
{
Console.WriteLine("Error calling Unregister: {0}", error);
}
AppDelegate.Hub.RegisterNativeAsync(AppDelegate.DeviceToken, new NSSet(tags.ToArray()), errorCallback =>
{
if (errorCallback != null)
{
Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
}
});
});
在向用户发送推送通知时,我正在尝试暂停代码:
await hub.SendAppleNativeNotificationAsync(alertJson, userId.ToString())
其中userId是我的标签。我正在采取这种方式,但推送通知不起作用。在天蓝色推送通知集线器中注册设备时,您能否建议我缺少什么。
答案 0 :(得分:0)
标记未在Azure推送通知中心注册
您是否在客户端应用或移动服务中注册了代码?根据{{3}}的最新版本,现在不允许从客户端应用注册标记。
客户端添加的推送通知标记当移动应用使用Azure应用服务移动应用后端注册推送通知时,有两个默认标记可以添加到Azure通知中心的注册中:安装ID,这是给定设备上的应用程序所特有的,以及用户ID,仅在用户之前已经过身份验证时添加。 客户端提供的任何其他标签都会被忽略,这是设计使然。(请注意,这与移动服务不同,客户端可以提供任何标签,并且注册过程中有挂钩。后端验证传入注册的标签。)
要注册标记,您需要从服务端添加api。有关更多信息,请参阅以下链接供您参考。
更新标签代码可能是这样的,
// Verify that the tags are a valid JSON array.
var tags = JArray.Parse(message);
// Define a collection of PartialUpdateOperations. Note that
// only one '/tags' path is permitted in a given collection.
var updates = new List<PartialUpdateOperation>();
// Add a update operation for the tag.
updates.Add(new PartialUpdateOperation
{
Operation = UpdateOperationType.Add,
Path = "/tags",
Value = tags.ToString()
});
try
{
// Add the requested tag to the installation.
await hubClient.PatchInstallationAsync(Id, updates);
}
catch(MessagingException)
{
// When an error occurs, ...
}