Мы получаем отчеты от наших тестеров о том, что не все Apple Push-уведомления доставляются. В частности, если уведомление отправляется во время запуска целевого устройства (загрузка, установление сетевого подключения и т. Д.), То уведомление никогда не будет получено .
Я понимаю, что APNS доставляет уведомления с максимальной отдачей. Я просмотрел документацию Apple , в которой говорится следующее о QoS:
Служба Apple Push Notification включает компонент качества обслуживания (QoS), который выполняет функцию сохранения и пересылки. Если APN пытается доставить уведомление, а целевое устройство находится в автономном режиме, APN сохраняет уведомление в течение ограниченного периода времени и доставляет его, когда устройство снова становится доступным. Этот компонент хранит только самые последние уведомления для каждого устройства и приложения. Если устройство находится в автономном режиме, отправка запроса уведомления, нацеленного на это устройство, приводит к отклонению предыдущего запроса. Если устройство долгое время остается в автономном режиме, все его сохраненные уведомления в APN удаляются.
Я установил apns-expiration
на 90 минут, чтобы задействовать функциональность QoS.
Уведомления доставляются, когда:
- Уведомление было отправлено, когда устройство включено и работает нормально.
- Уведомление было отправлено во время выключения устройства (впоследствии оно доставляется через короткое время после включения устройства).
Кроме того, мы используем шаблоны уведомлений с Azure Notification Hub для интеграции с APNS. Таким образом, наша конфигурация для срока действия и приоритета APNS выглядит следующим образом:
registration = new AppleTemplateRegistrationDescription(deviceUpdate.Handle, PushNotifications.IosTemplate)
{
Expiry = DateTimeOffset.UtcNow.AddMinutes(90).ToString("o"),
Priority = "10"
};
Как я могу отладить / устранить эту проблему, кто-нибудь сталкивался с подобным поведением?