Ejemplo n.º 1
0
        public Task RegisterGoogle(Guid account_id, string deviceToken)
        {
            return(Task.Run(async delegate()
            {
                try
                {
                    NotificationHubClient hubClient = this.HubClient;

                    Account account = this.API.Direct.Accounts.GetById(account_id);
                    string previousRegistrationID = account.push_google;

                    if (!string.IsNullOrEmpty(previousRegistrationID))
                    {
                        if (await hubClient.RegistrationExistsAsync(previousRegistrationID))
                        {
                            await hubClient.DeleteRegistrationAsync(previousRegistrationID);
                        }
                    }

                    string accountTag = string.Format(PushAssumptions.TARGET_ACCOUNT_FORMAT, account_id.ToString().ToLower());

                    var registrations = await hubClient.GetRegistrationsByTagAsync(accountTag, 100);

                    foreach (RegistrationDescription registration in registrations)
                    {
                        if (registration.Tags.Contains("droid"))
                        {
                            await hubClient.DeleteRegistrationAsync(registration);
                        }
                    }

                    List <string> tags = new List <string>();
                    tags.Add(accountTag);
                    tags.Add("droid");


                    GcmRegistrationDescription newRegistration = await hubClient.CreateGcmNativeRegistrationAsync(deviceToken, tags);

                    if (newRegistration != null)
                    {
                        this.API.Direct.Accounts.UpdatePushTokenGoogle(account.account_id, newRegistration.RegistrationId);
                    }
                }
                catch (Exception ex)
                {
                    base.IFoundation.LogError(ex);
                }
            }));
        }