Как установить расписание таймера для метода appDelegate? - PullRequest
0 голосов
/ 22 октября 2018

Мне нужно, чтобы мое приложение получало данные и показывало пользователю предупреждение в зависимости от ответа. Я пытаюсь создать функцию и затем вызвать ее для класса appDelegate ...

функция:

func triggerPushMessages(){

    Timer.scheduledTimer(withTimeInterval: 60, repeats: true) { (time) in

    // I want to perform a request here to show the alert to user




    let content = UNMutableNotificationContent()
    content.title = "testNotifications on background state"
    content.body = "date of notification: \(Date().timeIntervalSinceNow)"

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

    let notificationRequest = UNNotificationRequest(identifier: "test", content: content, trigger: trigger)

        UNUserNotificationCenter.current().add(notificationRequest, withCompletionHandler: { (err) in
            if let error = err {print(error);return}
        })


    }

}

Я создал эту функцию, чтобы проверить, появятся ли уведомления после того, как я установил таймер, но происходит то, что, когда я устанавливаю функцию timer.schedule, pushNotification не работает, если я удаляю таймер pushNotification работает ...

дело в том, что мне нужно запросить данные у Api, сначала дождаться ответа, а затем показать push-уведомление, чтобы предупредить пользователя ...

как я могу это сделать?

Я вызываю этот метод на:

 func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

        self.triggerPushMessages()


    }

Возможно ли это вообще?как такие приложения, как WhatsApp, Telegram, Tinder, могут обрабатывать / извлекать данные о фоновом состоянии, а затем показывать уведомления пользователю?

Заранее спасибо за ответ.

Я хотел бы добавитьчто мой 60-секундный запрос только для целей тестирования, я буду выполнять его один раз в час ...

1 Ответ

0 голосов
/ 22 октября 2018

Вы не можете добавить 60 секундный таймер в фоновом режиме приложения.это не разрешено в iOS.Если вы хотите показывать уведомление пользователю, даже если приложение находится в фоновом режиме или нет, вы можете отправлять push-уведомления со своего внутреннего сервера, интегрируя APNS (Apple push-уведомления).потому что вы говорите, что хотите показать уведомление пользователю, как только придет ответ API.В этом случае на сервере будут данные, и он сможет принять решение и отправить уведомление пользователю.

...