Тихие уведомления, полученные только при открытом телефоне - PullRequest
0 голосов
/ 03 февраля 2020

Так что у меня возникла проблема, с которой я думал, что вы, ребята, могли бы помочь с этим. У меня есть приложение iOS, созданное сторонним поставщиком. У меня есть API, который я построил сам, чтобы работать вместе с приложением, чтобы потреблять данные из базы данных HealthKit на устройстве. Поток такой:

Пользователь загружает, устанавливает и авторизует приложение для доступа к данным аптечки. Пользователь открывает приложение и входит в систему через API. Приложение отправляет данные аптечки обратно в API с учетными данными пользователя, чтобы я мог хранить отправленные данные и приписывать их пользователю.

Все отлично работает. Теперь часть, которая не работает так здорово. Мы используем FCM для отправки тихих уведомлений с атрибутом в объекте данных

{ task: syncnow }

, когда получено это тихое уведомление, он проверяет, является ли задача синхронизированной, и если да, он отправляет данные аптечки на наши серверы, поэтому пользователям не нужно вручную синхронизировать c каждый день. Проблема в том, что он кажется полученным только тогда, когда телефон активен и не заблокирован. Приложение работает нормально, если телефон активно используется, но если телефон заблокирован и экран выключен, ничего не происходит. Я попытался добавить звук к объекту aps на JSON, у меня также есть

content_available: true

в объекте aps. По общему мнению, это должно работать как задумано, но это не так. FCM также всегда возвращает успешные посылки всем в массиве пользователей объекта to.

моя JSON структура выглядит следующим образом:

{to: [array_of_fcm_tokens], data:{task: syncnow}, aps: {content_available: true, sound: ''}}

Я также попытался переместить content_available на верхний уровень объекта, а не в aps объект, я пробовал разные варианты content_available, content-available и разных типов значений (string, int, bool). Ничто не похоже на работу. Что мне не хватает? Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 03 февраля 2020

Вот возможности для исправления

1) Добавьте "content-available" = 1 в вашу полезную нагрузку

2) Получите его через

    func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler:@escaping (UIBackgroundFetchResult) -> Void) { 
}

3) Сделайте убедитесь, что фоновое refre sh вашего приложения включено в настройках устройства

4) Убедитесь, что вы добавили фоновый режим для удаленных уведомлений в приложении

5) Перезагрузите устройство

...