private static async Task CreateRegistrationAsync(NotificationHubClient nhClient) { var registrationId = await nhClient.CreateRegistrationIdAsync(); //var registrationDescr = await nhClient.CreateFcmNativeRegistrationAsync(registrationId); var registrationDescr = await nhClient.CreateAppleNativeRegistrationAsync(registrationId); //Console.WriteLine($"Created APNS registration {registrationDescr.FcmRegistrationId}"); //registrationDescr.RegistrationId = "96d6bb5d412881d30046f5bf5616beaddf6aa4abe57987bccc4b5c23209dbb0c"; registrationDescr.RegistrationId = "djPUqVGjd9I:APA91bE7UyqaMr0IAICU7Wz5eV5qUEaZ2nEA7YkFcz6UqCHv-nIkUNDBAE4cZdjjG5bw8WnT2Psu7-eV4GMURVXtMGzI_yju2VRAzaTShW-9xwW2qy9D_SPIRsD8xVLalVklQgy_xara"; Console.WriteLine($"Create APNS registration {registrationDescr.RegistrationId}"); var allRegistrations = await nhClient.GetAllRegistrationsAsync(1000); foreach (var regFromServer in allRegistrations) { if (regFromServer.RegistrationId == registrationDescr.RegistrationId) { //Console.WriteLine($"Found FCM registration {registrationDescr.FcmRegistrationId}"); Console.WriteLine($"Found APNS registration {registrationDescr.RegistrationId}"); break; } } //commented out by code creator (next 2 lines) //registrationDescr = await nhClient.GetRegistrationAsync<FcmRegistrationDescription>(registrationId); //Console.WriteLine($"Retrieved FCM registration {registrationDescr.FcmRegistrationId}"); }
private static async Task CreateAndDeleteRegistrationAsync(NotificationHubClient nhClient) { var registrationId = await nhClient.CreateRegistrationIdAsync(); //var registrationDescr = await nhClient.CreateFcmNativeRegistrationAsync(registrationId); var registrationDescr = await nhClient.CreateAppleNativeRegistrationAsync(registrationId); //Console.WriteLine($"Created APNS registration {registrationDescr.FcmRegistrationId}"); Console.WriteLine($"Create APNS registration {registrationDescr.RegistrationId}"); var allRegistrations = await nhClient.GetAllRegistrationsAsync(1000); foreach (var regFromServer in allRegistrations) { if (regFromServer.RegistrationId == registrationDescr.RegistrationId) { //Console.WriteLine($"Found FCM registration {registrationDescr.FcmRegistrationId}"); Console.WriteLine($"Found APNS registration {registrationDescr.RegistrationId}"); break; } } //commented out by code creator (next 2 lines) //registrationDescr = await nhClient.GetRegistrationAsync<FcmRegistrationDescription>(registrationId); //Console.WriteLine($"Retrieved FCM registration {registrationDescr.FcmRegistrationId}"); await nhClient.DeleteRegistrationAsync(registrationDescr); //Console.WriteLine($"Deleted FCM registration {registrationDescr.FcmRegistrationId}"); Console.WriteLine($"Deleted APNS registration {registrationDescr.RegistrationId}"); }
public async Task <AppleRegistrationDescription> ProcessRegistration(string deviceToken) { Trace.TraceInformation("Creating Registration"); AppleRegistrationDescription registration = await hub.CreateAppleNativeRegistrationAsync(deviceToken); Trace.TraceInformation("Created Registration with id '{0}'", registration.RegistrationId); return(registration); }
public async Task <RegistrationDescription> Register(string platform, string registerId, string key) { if (!string.IsNullOrEmpty(key)) { await _notificationHubClient.DeleteRegistrationAsync(key); } switch (platform) { case "android": return(await _notificationHubClient.CreateGcmNativeRegistrationAsync(registerId)); case "ios": return(await _notificationHubClient.CreateAppleNativeRegistrationAsync(registerId)); default: throw new Exception("Not supported platform."); } }
public async Task <RegistrationDescription> Register(Guid userId, string installationId, string deviceToken) { if (Guid.Empty == userId) { throw new ArgumentException("userId"); } // Get registrations for the current installation ID. var regsForInstId = await hubClient.GetRegistrationsByTagAsync(installationId, 100); var updated = false; var firstRegistration = true; RegistrationDescription registration = null; // Check for existing registrations. foreach (var registrationDescription in regsForInstId) { if (firstRegistration) { // Update the tags. registrationDescription.Tags = new HashSet <string>() { installationId, userId.ToString() }; var iosReg = registrationDescription as AppleRegistrationDescription; iosReg.DeviceToken = deviceToken; registration = await hubClient.UpdateRegistrationAsync(iosReg); updated = true; firstRegistration = false; } else { await hubClient.DeleteRegistrationAsync(registrationDescription); } } if (!updated) { registration = await hubClient.CreateAppleNativeRegistrationAsync(deviceToken, new string[] { installationId, userId.ToString() }); } // Send out a welcome notification. await this.Send(userId, "Thanks for registering"); return(registration); }
public Task RegisterApple(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_ios; 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("ios")) { await hubClient.DeleteRegistrationAsync(registration); } } List <string> tags = new List <string>(); tags.Add(accountTag); tags.Add("ios"); AppleRegistrationDescription newRegistration = await hubClient.CreateAppleNativeRegistrationAsync(deviceToken.Replace(" ", "").Replace("<", "").Replace(">", ""), tags); if (newRegistration != null) { this.API.Direct.Accounts.UpdatePushTokenApple(account.account_id, newRegistration.RegistrationId); } } catch (Exception ex) { base.IFoundation.LogError(ex); } })); }
public async Task <RegistrationDescription> Post([FromBody] JObject registrationCall) { // Get the registration info that we need from the request. var platform = registrationCall["platform"].ToString(); var installationId = registrationCall["instId"].ToString(); var channelUri = registrationCall["channelUri"] != null ? registrationCall["channelUri"].ToString() : null; var deviceToken = registrationCall["deviceToken"] != null ? registrationCall["deviceToken"].ToString() : null; var registrationId = registrationCall["registrationId"] != null ? registrationCall["registrationId"].ToString() : null; var userName = HttpContext.Current.User.Identity.Name; // Get registrations for the current installation ID. var regsForInstId = await _hubClient.GetRegistrationsByTagAsync(installationId, 100); bool updated = false; bool firstRegistration = true; RegistrationDescription registration = null; // Check for existing registrations. foreach (var registrationDescription in regsForInstId) { if (firstRegistration) { // Update the tags. registrationDescription.Tags = new HashSet <string> { installationId, userName }; // We need to handle each platform separately. switch (platform) { case "windows": var winReg = registrationDescription as WindowsRegistrationDescription; if (winReg != null) { if (channelUri != null) { winReg.ChannelUri = new Uri(channelUri); } registration = await _hubClient.UpdateRegistrationAsync(winReg); } break; case "android": var gcmReg = registrationDescription as GcmRegistrationDescription; if (gcmReg != null) { gcmReg.GcmRegistrationId = registrationId; registration = await _hubClient.UpdateRegistrationAsync(gcmReg); } break; case "ios": var iosReg = registrationDescription as AppleRegistrationDescription; if (iosReg != null) { iosReg.DeviceToken = deviceToken; registration = await _hubClient.UpdateRegistrationAsync(iosReg); } break; } updated = true; firstRegistration = false; } else { // We shouldn't have any extra registrations; delete if we do. await _hubClient.DeleteRegistrationAsync(registrationDescription); } } // Create a new registration. if (!updated) { switch (platform) { case "windows": registration = await _hubClient.CreateWindowsNativeRegistrationAsync(channelUri, new[] { installationId, userName }); break; case "android": registration = await _hubClient.CreateGcmNativeRegistrationAsync(registrationId, new[] { installationId, userName }); break; case "ios": registration = await _hubClient.CreateAppleNativeRegistrationAsync(deviceToken, new[] { installationId, userName }); break; } } // Send out a test notification. SendNotification(string.Format("Test notification for {0}", userName), userName); return(registration); }
/// <summary> /// Create a registration for an app instance /// </summary> /// <param name="hubClient">Notification hub client for this app</param> /// <param name="clientRegistrationId">Client registration id from iOS for this app instance</param> /// <param name="tags">Registration tags that describe the user and the app</param> /// <returns>Hub registration id</returns> protected override async Task <RegistrationDescription> CreateRegistrationAsync(NotificationHubClient hubClient, string clientRegistrationId, IEnumerable <string> tags) { return(await hubClient.CreateAppleNativeRegistrationAsync(clientRegistrationId, tags)); }