UILocalNotifcation 未在 swift 2.0 中触发
Posted
技术标签:
【中文标题】UILocalNotifcation 未在 swift 2.0 中触发【英文标题】:UILocalNotifcation not fired in swift 2.0 【发布时间】:2016-09-20 18:37:58 【问题描述】:我正在处理推送通知,并且我已完成设置推送通知的所有步骤。
当应用程序在后台时,我可以接收通知,但当应用程序在前台时,它登陆 didReceiveRemoteNotification 但它没有触发。
这是我在 AppDelegate.swift 中的代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Alert, .Sound], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
if application.applicationState == UIApplicationState.Active
let localNotification = UILocalNotification()
let date = NSDate(timeIntervalSinceNow: 10)
localNotification.fireDate = date
let timeZone = NSTimeZone.localTimeZone()
localNotification.timeZone = timeZone
localNotification.alertBody = "Sample Notification Body"
localNotification.userInfo = userInfo
print(localNotification)
localNotification.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
我做错了什么??
提前致谢
【问题讨论】:
【参考方案1】:我怀疑的是,当应用程序处于活动状态时,您正尝试使用本地通知显示远程通知。
好吧,无论是本地通知还是远程通知,当应用程序处于活动状态时,您都看不到任何 UI 警报,而是相应地调用本地或远程通知的委托方法。
不过,ios 10 增加了在应用内查看的功能。以下是讨论:https://***.com/a/37844312/593709
要在 iOS-10 之前的版本中显示任何警报,当您的应用处于活动状态时,您需要使用 UIAlertController
或其他一些实现,例如 MPNotificationView
。
【讨论】:
【参考方案2】:当应用程序处于前台并运行时,它不会显示通知横幅。仅当应用程序处于后台(非活动)或根本未运行时才会显示横幅警报。委托方法
application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
为远程(推送)通知和
调用application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification)
为本地通知而调用。
您可以使用任何第 3 方库 bryx-inc/BRYXBanner 为您的通知警报消息显示横幅。委托方法didReceiveRemoteNotification
可用于更新徽章图标并在横幅视图中显示消息。
【讨论】:
以上是关于UILocalNotifcation 未在 swift 2.0 中触发的主要内容,如果未能解决你的问题,请参考以下文章