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); }
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); }