如何在azure通知集线器上删除带有标签的用户?

时间:2013-06-04 16:13:04

标签: azure apple-push-notifications azureservicebus azure-notificationhub

如何删除带有标签的设备,意味着我有ios设备令牌,并且我注册的设备需要从后端删除此用户的标签?

还有我如何访问用户列表的详细信息,例如按标记或/和注册到azure通知中心的设备令牌?

1 个答案:

答案 0 :(得分:1)

为了删除标记,您只需使用包含它的一组标记更新注册。 E.g。

SBRegistration* toUpdate = [hub retrieveNativeRegistrationWithError: nil];
[[toUpdate tags] addObjectsFromArray: @[@"myNewTag1", @"myOtherNewTag"]];
[hub updateRegistration:toUpdate];

或异步:

[hub retrieveNativeRegistrationWithCompletion:^(SBRegistration* r, NSError* e) {
    if (r == nil) ; // error handling
    [[r tags] addObjectsFromArray:@[@"myNewTag", @"myOtherNewTag"]];
    [hub updateRegistration:r completion:^(SBRegistration* r2, NSError* e) {
        // error mgmt;
    }];
}];

另请注意,当您调用createNativeRegistration时,您将覆盖当前的标记集。这种命名不一致性在iOS SDK的下一版本中得到修复。

此时您无法按标签检索计数,但是(从后端)您可以使用标签检索所有注册(计算效率低下)。 您可以使用以下命令从后端.NET SDK执行此操作:

var skip = 0;
var increment = 100;
IEnumerable<RegistrationDescription> regs = hubClient.GetRegistrationsByTag("myTag", skip, increment);
while (regs.Count() != 0)
{
    foreach (var i in regs)
    {
        // do work
    }
    skip += increment + 1;
    regs = hubClient.GetRegistrationsByTag("myTag", skip, increment);
}

或使用我们的REST表面:GetRegistrationsByTag

谢谢,

埃利奥