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);
                }
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
 public async Task UnsubscribeDeviceFromPushAsync(CreatePushTokenRequest model)
 {
     Ensure.That(model, nameof(model)).IsNotNull();
     await _pushNotificationSubscriber.UnsubscribeDeviceAsync(model.Token);
 }