/// <summary> /// Sends a <see cref="ScheduledNotification"/> to a specified user. /// </summary> /// <param name="pushDetails">Details on how to reach the user.</param> /// <param name="notification">The notification object.</param> public async Task SendNotificationAsync(UserPushNotificationDetails pushDetails, SwabbrNotification notification) { if (pushDetails is null) { throw new ArgumentNullException(nameof(pushDetails)); } switch (pushDetails.PushNotificationPlatform) { case PushNotificationPlatform.APNS: var objApns = NotificationJsonExtractor.Extract(PushNotificationPlatform.APNS, notification); var jsonApns = JsonConvert.SerializeObject(objApns, jsonSettings); await _hubClient.SendAppleNativeNotificationAsync(jsonApns, pushDetails.UserId.ToString()); return; case PushNotificationPlatform.FCM: var objFcm = NotificationJsonExtractor.Extract(PushNotificationPlatform.FCM, notification); var jsonFcm = JsonConvert.SerializeObject(objFcm, jsonSettings); await _hubClient.SendFcmNativeNotificationAsync(jsonFcm, pushDetails.UserId.ToString()); return; default: throw new InvalidOperationException(nameof(pushDetails.PushNotificationPlatform)); } }
/// <summary> /// Does nothing and returns <see cref="Task.CompletedTask"/>; /// </summary> public Task SendNotificationAsync(UserPushNotificationDetails pushDetails, SwabbrNotification notification) => Task.CompletedTask;