示例#1
0
        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)));
        }
示例#2
0
        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);
            }
        }