Локальное уведомление не вызывается в IOS 10 Swift 2.3

#ios #uilocalnotification #ios10 #swift2.3 #unusernotificationcenter

#iOS #uilocalnotification #ios10 #swift2 #unusernotificationcenter

Вопрос:

У меня был мой старый код, написанный на swift 2.2 для регистрации и запуска UILocalNotification . Теперь, когда я перешел с Swift 2.2 на 2.3 в xcode 8 и IOS 9 на IOS 10. После этого я не могу получать никаких локальных уведомлений. Кроме того, в консоли не возникает никаких исключений. Могу подтвердить, что ранее оно нормально работало с IOS 9.

 UIApplication.sharedApplication().scheduleLocalNotification(notification)
  

Это код, который я использую для запуска моего локального уведомления.

Я вижу документ, в котором говорится, что этот метод устарел в IOS 10 и его нужно использовать UNUserNotificationCenter вместо этого. Но для его использования мне нужно перейти на Swift 3.0.

Следовательно, мой вопрос в том, является ли это ошибкой / лазейкой в Swift 2.3? Есть ли у нас какие-либо обходные пути для этого? Или я что-то упускаю?

Комментарии:

1. UILocalNotifications устарела в iOS 10, но не удалена, поэтому вы все еще можете использовать

2. Я использую это, но не могу получить какое-либо уведомление, даже если оно запланировано. Которое работало должным образом в ios 9.

3. «вместо этого необходимо использовать UNUserNotificationCenter. Но чтобы использовать это, мне нужно перейти на Swift 3.0 » Нет, это совершенно фиктивно. Язык не имеет ничего общего с системой .

Ответ №1:

Это код Swift 2.3, который я использую для отображения локальных уведомлений в моем приложении для пользователей iOS 10:

 func showLocalNotif() {      


    if #available(iOS 10, *) {
        let content = UNMutableNotificationContent()
        content.title = "your title"
        content.subtitle = "your subtitle"
        content.body = "your message to the users"
        content.categoryIdentifier = "message"

        //Set the trigger of the notification -- here a timer.
        let trig = UNTimeIntervalNotificationTrigger(
            timeInterval: 100,
            repeats: false)

        //Set the request for the notification from the above
        let request = UNNotificationRequest(
            identifier: "100.second.message",
            content: content,
            trigger: trig

        )

        //Add the notification to the current notification center
        UNUserNotificationCenter.currentNotificationCenter().addNotificationRequest(request, withCompletionHandler: addNotificationRequestHandler)


    }}
  

Ответ №2:

Я полагаю, что 2.3 предоставляет вам доступ к новому API. Вы должны иметь возможность просто использовать новый API UNUserNotificationCenter