标签未在Azure推送通知中心

时间:2017-08-05 05:25:44

标签: azure notifications xamarin.forms azure-mobile-services

我尝试注册标签,用于将推送通知发送到基于标签的特定标签,但在使用标签基础发送过程时推送不起作用。在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是我的标签。我正在采取这种方式,但推送通知不起作用。在天蓝色推送通知集线器中注册设备时,您能否建议我缺少什么。

1 个答案:

答案 0 :(得分:0)

  

标记未在Azure推送通知中心注册

您是否在客户端应用或移动服务中注册了代码?根据{{​​3}}的最新版本,现在不允许从客户端应用注册标记。

客户端添加的推送通知标记当移动应用使用Azure应用服务移动应用后端注册推送通知时,有两个默认标记可以添加到Azure通知中心的注册中:安装ID,这是给定设备上的应用程序所特有的,以及用户ID,仅在用户之前已经过身份验证时添加。 客户端提供的任何其他标签都会被忽略,这是设计使然。(请注意,这与移动服务不同,客户端可以提供任何标签,并且注册过程中有挂钩。后端验证传入注册的标签。)

要注册标记,您需要从服务端添加api。有关更多信息,请参阅以下链接供您参考。

document

更新标签代码可能是这样的,

// 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, ...
}