Приложение, работающее в фоновом режиме, отправляет локальные уведомления

Как я могу отправлять локальные уведомления, когда приложение работает в фоновом режиме? в Swift 4. Мое приложение постоянно использует файл Json, и я хочу, чтобы приложение продолжало работать, чтобы оно отправляло пользователю локальное уведомление. Я хочу, чтобы if label = label2 в фоновом режиме, push-уведомление приложения для пользователя.

 label.text = myString
    if label.text! == label2.text! {

            let content = UNMutableNotificationContent()
            content.title = "\(label2.text!)Değeri Kaydedildi!"
            content.body = "Değer döndüğünde haber verilecek."
            content.sound = UNNotificationSound.default()

            let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)

            let request = UNNotificationRequest.init(identifier: "deneme", content: content, trigger: trigger)

            UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

        }

person Holofacts    schedule 03.12.2018    source источник
comment
Следуйте этому сообщению: stackoverflow.com/a/53557313/3420996   -  person Natarajan    schedule 03.12.2018
comment
Для всех, кто может столкнуться с этим вопросом ... вы не должны выполнять работу с пользовательским интерфейсом в фоновом режиме. Ваше приложение будет работать только в течение короткого времени после перехода в фоновый режим, а затем будет приостановлено. Это означает, что этот код не будет работать. Вы можете использовать удаленные тихие уведомления для запуска обновлений или фоновой выборки, а затем отправлять уведомления на основе данных... не пользовательского интерфейса.   -  person Scriptable    schedule 22.07.2019


Ответы (1)


в AppDelegate попробуйте найти функцию didReceiveRemoteNotification

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

    #if DEBUG
    print("Get User Info fetchCompletionHandler \(userInfo)")
    #endif

    // Your notification is in userInfo, you should cast it first before you show it
    // Do what you want

    completionHandler(.newData)
}
person Pandu Abbiyuarsyah    schedule 04.12.2018
comment
Это для удаленных push-уведомлений, а не для локальных уведомлений. - person Gabo Ruiz; 21.09.2019