быстрое уведомление не срабатывает - PullRequest
1 голос
/ 28 мая 2020

Я новичок в быстрых уведомлениях и установил следующее в моем файле AppDelegate.swift. Он работает, и я получаю вывод на печать, что уведомления настроены и не содержат ошибок. Я также получаю разрешение запрашивать уведомления, для чего нажимаю "да". Я считаю, что уведомление с интервалом должно сработать через 20 секунд после запуска. Он не срабатывает, это не меняется, если я в приложении или свернул приложение. Обратите внимание: я работаю в режиме симулятора из XCODE. Почему мое уведомление не срабатывает?

    func setupNotifications(){

        let notificationCenter = UNUserNotificationCenter.current()

        notificationCenter.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
            if granted {
                print("Yay!")
            } else {
                print("D'oh")
            }
        }

        notificationCenter.removeAllPendingNotificationRequests()
        print("setting up notifications")
        let content = UNMutableNotificationContent()
        content.title = "Answer your daily questions"
        content.body = "Answer your daily questions please"
        content.categoryIdentifier = "alarm"
        content.userInfo = ["customData": "fizzbuzz"]
        content.sound = UNNotificationSound.default

        //let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (1*60), repeats: true)
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 20, repeats: false)

        // Create the request
        let request = UNNotificationRequest(identifier: "daily-notifier",
                    content: content, trigger: trigger)

        // Schedule the request with the system.
        notificationCenter.add(request) { (error) in
           if error != nil {
            print("there were errors to address")
              // Handle any errors.
           }
        }
        print("done setting up notifications")
    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        let path = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
        print("\(path)")

        // Override point for customization after application launch.

        setupNotifications()  
        return true
    }

1 Ответ

0 голосов
/ 28 мая 2020

ПРИМЕЧАНИЕ: это был бы комментарий, если бы у меня была достаточная репутация.

Во-первых, обратите внимание, что вам, вероятно, следует дождаться получения разрешения, прежде чем добавлять запрос на локальное уведомление в соответствии с документацией Apple requestAuthorization(options:completionHandler:)

Примечание: всегда вызывайте этот метод перед планированием любых локальных уведомлений и перед регистрацией в Apple Pu sh Служба уведомлений.

Также убедитесь, что вы добавили Pu sh Уведомления как возможность для вашего приложения, поскольку они потребуются, если вы его отправите.

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

...