public async Task UpdatePushTokenIfNeeded(PushNotificationChannel pushChannel) { string tokenHash = Helpers.ComputeMD5(pushChannel.Uri); string storedTokenHash = SettingsManager.Instance.ReadFromSettings<string>(SettingsKeys.PushTokenHash); if (tokenHash != storedTokenHash) { string storedTokenId = SettingsManager.Instance.ReadFromSettings<string>(SettingsKeys.PushTokenId); if (!string.IsNullOrEmpty(storedTokenId)) await quickbloxClient.NotificationClient.DeletePushTokenAsync(storedTokenId); var settings = new CreatePushTokenRequest() { DeviceRequest = new DeviceRequest() {Platform = Platform.windows_phone, Udid = Helpers.GetHardwareId()}, PushToken = new PushToken() { Environment = Environment.production, ClientIdentificationSequence = pushChannel.Uri } }; var createPushTokenResponse = await quickbloxClient.NotificationClient.CreatePushTokenAsync(settings); if (createPushTokenResponse.StatusCode == HttpStatusCode.Created) { SettingsManager.Instance.WriteToSettings(SettingsKeys.PushTokenId, createPushTokenResponse.Result.PushToken.PushTokenId); SettingsManager.Instance.WriteToSettings(SettingsKeys.PushTokenHash, tokenHash); } } }
public async Task CreateOrUpdatePushSubscriptionAsync(CreatePushTokenRequest request) { Ensure.That(request, nameof(request)).IsNotNull(); var member = await _memberService.GetMemberBySaasUserIdAsync(request.SaasUserId); var subscribedChannels = await _channelService.GetAllowedChannelsAsync(request.SaasUserId); var tags = new List <string> { PushNotificationsTagTemplates.GetMemberSubscriptionTag(member.SaasUserId) }; // add user subscribed channels tags tags.AddRange(subscribedChannels.Select(x => PushNotificationsTagTemplates.GetChatChannelTag(x.Id.ToString()))); await _pushNotificationSubscriber.CreateOrUpdatePushSubscriptionAsync(new PushSubscriptionRequest(request.Token, request.DevicePlatform, tags)); }
public async Task UnsubscribeDeviceFromPushAsync(CreatePushTokenRequest model) { Ensure.That(model, nameof(model)).IsNotNull(); await _pushNotificationSubscriber.UnsubscribeDeviceAsync(model.Token); }