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