如何在使用Azure通知中心安装模型时获得所有安装

本文关键字:安装 模型 通知 Azure | 更新日期: 2023-09-27 17:53:37

使用NotificationHubClient,我可以使用GetAllRegistrationsAsync()获得所有注册设备。但是,如果我不使用注册模式,而是使用安装模式,我如何获得所有安装?有一些方法可以检索特定的安装,但没有一个方法可以获取所有内容。

如何在使用Azure通知中心安装模型时获得所有安装

你是对的,截至2016年7月,没有办法获得集线器的所有安装。将来,产品团队计划将此功能添加到安装模型中,但它将以不同的方式工作。您将提供存储连接字符串,而不是使其成为运行时操作,您将获得一个包含与集线器相关的所有内容的blob。

抱歉访问旧线程…但理论上,您可以使用getallregistrationasync来获得所有安装。我猜这将返回没有安装id的所有内容,但如果您选择,您可以忽略这些。

可以像这样

        var allRegistrations = await _hub.GetAllRegistrationsAsync(0);
        var continuationToken = allRegistrations.ContinuationToken;
        var registrationDescriptionsList = new List<RegistrationDescription>(allRegistrations);
        while (!string.IsNullOrWhiteSpace(continuationToken))
        {
            var otherRegistrations = await _hub.GetAllRegistrationsAsync(continuationToken, 0);
            registrationDescriptionsList.AddRange(otherRegistrations);
            continuationToken = otherRegistrations.ContinuationToken;
        }
        // Put into DeviceInstallation object
        var deviceInstallationList = new List<DeviceInstallation>();
        foreach (var registration in registrationDescriptionsList)
        {
            var deviceInstallation = new DeviceInstallation();
            var tags = registration.Tags;
            foreach(var tag in tags)
            {
                if (tag.Contains("InstallationId:"))
                {
                    deviceInstallation.InstallationId = new Guid(tag.Substring(tag.IndexOf(":")+1));
                }
            }
            deviceInstallation.PushHandle = registration.PnsHandle;
            deviceInstallation.Tags = new List<string>(registration.Tags);
            deviceInstallationList.Add(deviceInstallation);
        }

我并不是说这是最干净的代码块,但它确实对我们有用。无论如何,我们只在调试类型时使用它