本地通知停止工作,无法弄清楚原因
Local notifications stopped working, can't figure out why
去年我的 iOS 项目收到了本地通知,然后将其搁置一旁,但几周前我回来时发现它们不再有效。我已经挖了几天了,我完全被难住了。徽章仍会通过后台获取正确更新,但不再发送通知警报。这是我用于测试的最小设置。
AppDelegate:
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Badge, .Alert], categories: nil))
return true
}
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let localNotification = UILocalNotification()
localNotification.alertAction = "Message"
application.presentLocalNotificationNow(localNotification)
completionHandler(.NoData)
}
我尝试过的事情:
- Uninstalling/reinstalling 应用程序(设备和模拟器)
- 更改捆绑标识符
- Disabling/re-enabling 后台获取能力
- 通过添加 fireDate 属性呈现延迟的本地通知
- 尝试了 willFinishLaunchingWithOptions 和 didFinishLaunchingWithOptions
- 我已经对其进行了调试,并且 100% 确定当我模拟后台提取并调用 presentLocalNotificationNow 时执行 performFetchWithCompletionHandler
设置:
- Xcode 7.3.1(从以前的版本开始,可能 6.x.x)
- Swift 2.2(在 2.1 上启动项目并正常运行)
- iOS 9(8 日开始该项目并正常运行)
我错过的 API 有什么变化吗,或者我在做什么有什么错误?感谢您的帮助!
UILocalNotification 需要设置 alertBody
才能显示。所以有以下工作:
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let localNotification = UILocalNotification()
localNotification.alertBody = "You have a notification"
localNotification.alertAction = "Message"
application.presentLocalNotificationNow(localNotification)
completionHandler(.NoData)
}
去年我的 iOS 项目收到了本地通知,然后将其搁置一旁,但几周前我回来时发现它们不再有效。我已经挖了几天了,我完全被难住了。徽章仍会通过后台获取正确更新,但不再发送通知警报。这是我用于测试的最小设置。
AppDelegate:
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Badge, .Alert], categories: nil))
return true
}
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let localNotification = UILocalNotification()
localNotification.alertAction = "Message"
application.presentLocalNotificationNow(localNotification)
completionHandler(.NoData)
}
我尝试过的事情:
- Uninstalling/reinstalling 应用程序(设备和模拟器)
- 更改捆绑标识符
- Disabling/re-enabling 后台获取能力
- 通过添加 fireDate 属性呈现延迟的本地通知
- 尝试了 willFinishLaunchingWithOptions 和 didFinishLaunchingWithOptions
- 我已经对其进行了调试,并且 100% 确定当我模拟后台提取并调用 presentLocalNotificationNow 时执行 performFetchWithCompletionHandler
设置:
- Xcode 7.3.1(从以前的版本开始,可能 6.x.x)
- Swift 2.2(在 2.1 上启动项目并正常运行)
- iOS 9(8 日开始该项目并正常运行)
我错过的 API 有什么变化吗,或者我在做什么有什么错误?感谢您的帮助!
UILocalNotification 需要设置 alertBody
才能显示。所以有以下工作:
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let localNotification = UILocalNotification()
localNotification.alertBody = "You have a notification"
localNotification.alertAction = "Message"
application.presentLocalNotificationNow(localNotification)
completionHandler(.NoData)
}