IOS Странное поведение для фона pu sh уведомлений, когда приложение убито - PullRequest
0 голосов
/ 09 марта 2020

Я думаю, что я прочитал всю возможную документацию и все возможные ответы через Интернет и до сих пор не могу сделать эту работу:

  1. Использование облачных функций Firebase для отправки на сервер APNS

  2. имеется 4 устройства: два соответствуют 13.3.1 (XR и SX Max), одно с 13,1 (6 с) и одно с 12 (6) ios установленными

  3. Отправка уведомлений pu sh достигает всех телефонов, когда они находятся на переднем или заднем плане

  4. Отправка уведомлений pu sh достигает всех телефоны, кроме телефона с ios 12, когда приложение отключено, но все еще подключено к источнику питания, и имеют сеть

  5. После отключения от питания в течение некоторого времени или потери сетевого подключения, Даже если снова подключить телефон и восстановить сеть, XS max перестал получать уведомления, но XR и 6S все еще их получают. ( didReceiveRemoteNotification: fetchCompletionHandler: не срабатывает! )

Я испробовал каждый трюк и каждое предложение, приведенное где-либо.

Использование Swift 4.2 из разработки прямо сейчас и поддерживаемый SDK для этого проекта: IOS 10 (Компания не подняла до Swift 5 и IOS 12/13)

Код приложения: подписка происходит всегда (работает нормально)

В приложении: didFinishLaunchingWithOptions:

Messaging.messaging().delegate = self
Messaging.messaging().subscribe(toTopic: "theTopic") { error in
    print("Subscribed to LocationWakeNotify topic")
}

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.sound, .alert]) { (granted, error) in }
application.registerForRemoteNotifications()
UNUserNotificationCenter.current().delegate = self

Код сервера:

let message = {
  topic: data.topic,
  apns: {
    payload: {
      aps: {
        "content-available" : 1
      },
      "content-id" : 1
    },
    headers: {
      "apns-push-type" : "background",
      "apns-priority" : "5"
    }
  }
};

Я пытался с content-available: true, и это то же самое.

Я пробовал с заголовками и без них, и это происходит только тогда, когда приложение убито, и с помощью тихих уведомлений, если я отправляю контент (заголовок / текст), тогда доставка на все устройства 100%, но мне нужно, чтобы это было тихое уведомление.

Мне кажется, что когда я отключаю питание или сеть или что-то (я просто не могу понять это), некоторые устройства теряют слушателя?!? Я упомяну, что я не могу найти никакого различия в настройках в XR, который всегда работает, и XS Max, который теряет связь.

Более странная проблема заключается в том, что во всех устройствах изменения местоположения запускаются (locationManage : didUpdateLocations :), но делегат уведомления не запускается. Так что даже приложение не отключается от ОС. И уведомления работают так, как на некоторых устройствах они работают все время, а на других не ... очень странно.

10x

1 Ответ

1 голос
/ 09 марта 2020

Вы зарегистрированы для уведомлений? Вы можете попробовать с этим кодом в AppDelegate и назвать это весело c в didFinishLaunch

private func registerRemoteNotifications(for application: UIApplication) {
        Messaging.messaging().delegate = self
        UNUserNotificationCenter.current().delegate = self

        // Notifications
        if #available(iOS 10.0, *) {
            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.current().delegate = self

            let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: { _, _ in })
        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }

        application.registerForRemoteNotifications()
}
    ```
...