我正在使用UNUserNotificationCenter实施新通知。但我需要保持向后兼容,因此我在所有地方都进行了检查:
if #available(iOS 10.0, *) { ... }
else { ... }
这似乎在iOS10中运行良好。为了能够使用UNUserNotificationCenter框架,我必须导入:
import NotificationCenter
但它崩溃了iOS9.3,因为它不知道它是什么。 它是一个编译时动作,而不是运行时动作 - 所以它意味着我不能在imports上放置条件。如果我创建一个单独的类,并放入
@available(iOS 10.0, *)
class ....
在类实现之前也会发生导入。 我应该如何解决此问题?
答案 0 :(得分:1)
尝试导航到Build Phases-> Link Binary with Libraries并添加NotificationCenter并将状态设置为" optional"而不是"要求"。
答案 1 :(得分:0)
首先你必须使用:
导入UserNotifications 用于本地通知。
条件:Xcode 8 beta 6和Sierra beta6
一些测试代码:
a)iOS 10仅适用于swift 3:
override func viewDidLoad() {
super.viewDidLoad()
// ADC site:
// Listing 1
// Requesting authorization for user interactions
/ * let center = UNUserNotificationCenter.currentNotificationCenter() center.requestAuthorizationWithOptions([.Alert,.Sound]){(授予,错误)in } * /
// swift 3.0:
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
2)支持iOS 9 :(我已更改部署目标)
// swift 3.0:
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
} else {
// Fallback on earlier versions
}