#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