示例#1
0
        public async Task <List <PushRegistrationDescription> > GetRegistrationsByUserId(string userId)
        {
            var registrations = new List <PushRegistrationDescription>();

            try
            {
                var hubClient = NotificationHubClient.CreateClientFromConnectionString(Config.ServiceBusConfig.AzureNotificationHub_FullConnectionString, Config.ServiceBusConfig.AzureNotificationHub_PushUrl);

                var registraions = await hubClient.GetRegistrationsByTagAsync(string.Format("userId:{0}", userId), 50);

                if (registraions != null && registraions.Any())
                {
                    foreach (var registraion in registraions)
                    {
                        var pushReg = new PushRegistrationDescription();
                        pushReg.ETag           = registraion.ETag;
                        pushReg.ExpirationTime = registraion.ExpirationTime;
                        pushReg.RegistrationId = registraion.RegistrationId;
                        pushReg.Tags           = registraion.Tags;

                        registrations.Add(pushReg);
                    }
                }
            }
            catch
            { /* We can get some timeout errors, aggregate errors, etc from here. For right now, lets just return an empty list on any error. -SJ (12-13-2015) */ }

            return(registrations);
        }
示例#2
0
        public async Task <List <PushRegistrationDescription> > GetRegistrationsByDeviceId(string deviceId)
        {
            List <PushRegistrationDescription> registrations = new List <PushRegistrationDescription>();

            var hubClient = NotificationHubClient.CreateClientFromConnectionString(Config.ServiceBusConfig.AzureNotificationHub_FullConnectionString, Config.ServiceBusConfig.AzureNotificationHub_PushUrl);

            try
            {
                // Step 1: Get the push registrations by the deviceId (passed via the Cordova UniqueDeviceId plugin
                var registraions = await hubClient.GetRegistrationsByTagAsync(string.Format("deviceId:{0}", deviceId), 50);

                if (registraions != null && registraions.Any())
                {
                    foreach (var registraion in registraions)
                    {
                        var pushReg = new PushRegistrationDescription();
                        pushReg.ETag           = registraion.ETag;
                        pushReg.ExpirationTime = registraion.ExpirationTime;
                        pushReg.RegistrationId = registraion.RegistrationId;
                        pushReg.Tags           = registraion.Tags;

                        registrations.Add(pushReg);
                    }
                }

                // Step 2: Get the push registrations by the hashed version of the deviceId (passed via the Cordova UniqueDeviceId plugin (We hash is now because some deviceId's are longer/contain bar chars.
                var registraions2 = await hubClient.GetRegistrationsByTagAsync(string.Format("deviceId:{0}", deviceId.GetHashCode()), 50);

                if (registraions2 != null && registraions2.Any())
                {
                    foreach (var registraion in registraions2)
                    {
                        var pushReg = new PushRegistrationDescription();
                        pushReg.ETag           = registraion.ETag;
                        pushReg.ExpirationTime = registraion.ExpirationTime;
                        pushReg.RegistrationId = registraion.RegistrationId;
                        pushReg.Tags           = registraion.Tags;

                        registrations.Add(pushReg);
                    }
                }
            }
            catch
            { /* We can get some timeout errors, aggregate errors, etc from here. For right now, lets just return an empty list on any error. -SJ (12-13-2015) */ }

            return(registrations);
        }