SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息

上一篇讲到的本地推送是普通的消息推送,本篇要讲一下带按钮动作的推送消息,先上个图瞅瞅:

继上一篇的内容进行小小的改动:

在didFinishLaunchingWithOptions方法内进行以下修改

if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8 {
//            APService.registerForRemoteNotificationTypes(
//                UIUserNotificationType.Badge.rawValue |
//                UIUserNotificationType.Sound.rawValue |
//                UIUserNotificationType.Alert.rawValue,
//                categories: setting.categories)

            //1.创建一组动作
            var userAction = UIMutableUserNotificationAction()
            userAction.identifier = "action"
            userAction.title = "Accept"
            userAction.activationMode = UIUserNotificationActivationMode.Foreground

            var userAction2 = UIMutableUserNotificationAction()
            userAction2.identifier = "action2"
            userAction2.title = "Ingore"
            userAction2.activationMode = UIUserNotificationActivationMode.Background
            userAction2.authenticationRequired = true
            userAction2.destructive = true

            //2.创建动作的类别集合
            var userCategory = UIMutableUserNotificationCategory()
            userCategory.identifier = "MyNotification"
            userCategory.setActions([userAction,userAction2], forContext: UIUserNotificationActionContext.Minimal)
            var categories:NSSet = NSSet(object: userCategory)

            //3.创建UIUserNotificationSettings,并设置消息的显示类类型
            var userSetting = UIUserNotificationSettings(forTypes:
                    UIUserNotificationType.Badge |
                    UIUserNotificationType.Sound |
                    UIUserNotificationType.Alert
                , categories: categories as Set<NSObject>)

            //4.注册推送
            application.registerForRemoteNotifications()
            application.registerUserNotificationSettings(userSetting)

        }

2.修改applicationDidEnterBackground方法

func applicationDidEnterBackground(application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
        UIApplication.sharedApplication().cancelAllLocalNotifications()

        var notification = UILocalNotification()
        //notification.fireDate = NSDate().dateByAddingTimeInterval(1)
        //setting timeZone as localTimeZone
        notification.timeZone = NSTimeZone.localTimeZone()
        notification.repeatInterval = NSCalendarUnit.CalendarUnitDay
        notification.alertTitle = "This is a local notification"
        notification.alertBody = "Hey,It‘s great to see you again"
        notification.alertAction = "OK"
        notification.category = "MyNotification" //这个很重要,跟上面的动作集合(UIMutableUserNotificationCategory)的identifier一样
        notification.soundName = UILocalNotificationDefaultSoundName
        //setting app‘s icon badge
        notification.applicationIconBadgeNumber = 1

        var userInfo:[NSObject : AnyObject] = [NSObject : AnyObject]()
        userInfo["kLocalNotificationID"] = "LocalNotificationID"
        userInfo["key"] = "Attention Please"
        notification.userInfo = userInfo

        //UIApplication.sharedApplication().scheduleLocalNotification(notification)
        //UIApplication.sharedApplication().presentLocalNotificationNow(notification)
        application.presentLocalNotificationNow(notification)
    }

3.点击推送消息的按钮时会触发func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {}这个方法。

如果是远程推送那就是func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [NSObject : AnyObject], completionHandler: () -> Void) {}这个方法。

这里只需要调用本地第一个方法即可

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {
        println("identifier=\(identifier)")  //这里的identifier是按钮的identifier

        completionHandler()  //最后一定要调用这上方法
    }
时间: 2024-10-07 04:39:12

SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息的相关文章

ios (推送)之本地推送

iOS上有两种消息通知,一种是本地消息(Local Notification),一种是远程消息(Push Notification,也叫Remote Notification),设计这两种通知的目的都是为了提醒用户,现在有些什么新鲜的事情发生了,吸引用户重新打开应用.本地推送也可以通过服务器控制,比如说如果有新消息了,推送消息,但是,前提是程序必须是打开的,而远程推送,是通过苹果APNS服务器,推送给手机,手机在推送给具体的哪个程序,一般远程推送用到的比较多,先介绍下本地推送,下节在介绍远程推送

iOS推送之本地推送

写此文的原因可见此文章的姊妹篇iOS推送之远程推送(iOS Notification Of Remote Notification),如果你看过了它的姊妹篇,了解过了远程推送,那么再来看此本地推送,真真是易如反掌啊! 此篇文章的逻辑如下图所示: 图0-0 此篇文章的逻辑图 本地推送介绍 本地推送和远程推送的功能是一样的,都是要提醒用户去做某些事情.但是和远程推送不同的就是本地推送是不需要设备联网的,而远程推送是必需要设备联网的,因为只有联网状态下,才能和苹果的APNs服务器建立长连接,从而推送消

iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送、本地推送

iOS开发 - ANPs推送通知 标签: 推送通知ANPs远程推送本地推送 2015-05-03 14:12 3510人阅读 评论(0) 收藏 举报 本文章已收录于:  iOS知识库  分类: [IOS -事件响应者链](3)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 推送通知 注意:这里说的推送通知跟NSNotification有所区别 NSNotification是抽象的,不可见的 推送通知是可见的(能用肉眼看到) iOS中提供了2种推送通知 本地推送通知(L

IOS之推送通知(本地推送和远程推送)

推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification):手机应用本身的通知,比如:闹铃 远程推送通知:(Remote Notification)从服务器发送过来的通知 推送通知的作用:让不在前台运行的App,告知用户App内部发生了什么事情.比如我们正在聊微信,突然界面上面出现了黑色半透明横幅(QQ好友给你发送的消息)这就是一个推送通知. 推送通知的呈

iOS远程推送与本地推送的函数方法

简单总结一下远程推送消息的相应情况 1. 当程序处于关闭状态收到推送消息时,点击图标会调用- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 这个方法,那么消息给通过launchOptions这个参数获取到. 2. 当程序处于前台工作时,这时候若收到消息推送,会调用- (void)application:(UIApplication*

SWIFT推送之本地推送(UILocalNotification)

本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. 1.首先在didFinishLaunchingWithOptions方法内添加代码,IOS8推送消息首先要获得用户的同意,在初次安装App时会提示用户是否允许程序推送消息,此方法是App第一次运行的时候被执行一次,每次从后台激活时不执行该方法. func application(application:

iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解(转载自薛银亮 [email&#160;protected])

原文地址:http://www.cnblogs.com/66it/p/4784224.html iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解 什么是消息推送 举一个常见的例子,我们的手机上经常会有弹出一些信息,例如QQ信息.微信信息等等,这就是常见的消息推送. 例如: 消息推送的类型: 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字(说明新

iOS推送之远程推送

最近公司项目升级重构(重写),除了本来我所负责的模块,最后临危受命接了推送(远程和本地)相关的模块,顺便把推送的相关知识复习了一遍.后期连续工作十几天加上最后一天的通(瞎)宵(熬)达(一)旦(夜),也算是不辱使命.此文除了讲解远程推送相关的基本知识外,也会涉及一些推送相关的奇淫技巧.另外本文主要讲解远程推送,后续会出一篇iOS推送之本地推送(iOS Notification Of Local Notification)的姊妹篇. 此篇文章的逻辑如下图所示: 图0-0 此篇文章的逻辑图 远程推送原

Swift 本地推送通知UILocalNotification

Notification是智能手机应用开发中常用的信息传递机制,它不用消耗更多资源去不停的检查信息状态,可以非常好的节省资源. 在iOS中分为两种通知:本地.远程.本地的UILocalNotification由全局的NotificationManager统一管理,我们只需要将本地通知对象添加到系统的Notification队列中就可以了,系统会在指定的时间激发本地通知. 本地推送通知:UILocalNotification 如果要使用推送通知,必须先在苹果的推送通知服务里注册你要使用哪几种类型的