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 中触发的主要内容,如果未能解决你的问题,请参考以下文章

使用 SWI 序言

SWI Prolog与GNU Prolog - SWI下的CLP(FD)问题

SWI-Prolog 写入文件

SWI-Prolog 写入文件

arm体系如何对SWI功能

Swi-prolog 双向子句/事实