public async Task HandleAsync(PushExternalApnsNotificationCommand message, CancellationToken cancellationToken) { List <ApnsExternalUserDeviceToken> tokens = await repository.Where <ApnsExternalUserDeviceToken>( x => message.UserIds.Contains(x.ExternalUserId) && x.AppId == message.AppId) .ToListAsync(repository.GetQueryableResolver <ApnsExternalUserDeviceToken>()); if (tokens.Count == 0) { return; } apnsBrokerDispatcher.QueueNotifications( tokens.Select( x => new WrappedApnsNotification(new ApnsNotification(x.DeviceToken, message.Payload), x.AppId))); }
public async Task SendNotificationsAsync(IReadOnlyCollection <INotification> notifications) { IEnumerable <WrappedApnsNotification> apnsNotifications = null; foreach (IApnsNotificationFormatter formatter in pushNotificationFormatters) { IEnumerable <WrappedApnsNotification> pushNotifications = await formatter.FormatPushNotification(notifications); apnsNotifications = apnsNotifications?.Concat(pushNotifications) ?? pushNotifications; } if (apnsNotifications != null) { apnsBrokerDispatcher.QueueNotifications(apnsNotifications); } }