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

来源:互联网 发布:淘宝开店认证需要等吗? 编辑:程序博客网 时间:2024/06/08 18:21

在didFinishLaunchingWithOptions方法内进行以下修改

//判断ios 版本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 设置icon        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()  //最后一定要调用这上方法    }
0 0
原创粉丝点击