1.创建消息处理事件
var window: UIWindow?
let NotificationCategoryIdent:NSString = "ACTIONABLE"
let NotificationActionOneIdent:NSString = "ONE"
let NotificationActionTwoIdent:NSString = "TWO"
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
// Override point for customization after application launch.
self.registerForNotification()
return true
}
func registerForNotification(){
var leftAction:UIMutableUserNotificationAction = UIMutableUserNotificationAction()
//这里需要注意的是你处理消息是在你对应的应用程序前台处理还是后台处理,
//Foreground会跳进应的应用程序里面,Background则会在当前消息界面处理即苹果的主当前窗口。
leftAction.activationMode = UIUserNotificationActivationMode.Foreground
leftAction.title = "left"
leftAction.identifier = NotificationActionOneIdent
leftAction.destructive = false
leftAction.authenticationRequired = false
var rightAction:UIMutableUserNotificationAction = UIMutableUserNotificationAction()
rightAction.activationMode = UIUserNotificationActivationMode.Foreground
rightAction.title = "right"
rightAction.identifier = NotificationActionTwoIdent
rightAction.destructive = false
rightAction.authenticationRequired = false
//这个Category很重要很重要,这个是后面进行消息通信联系起来的
var notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
notificationCategory.identifier = NotificationCategoryIdent
var actionArray:NSArray = [rightAction,leftAction]
notificationCategory.setActions(actionArray, forContext: UIUserNotificationActionContext.Default)
var categories:NSSet = NSSet(object:notificationCategory)
let types:UIUserNotificationType = [.Alert,.Badge,.Sound]
var notificationSettings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes:types,categories:categories)
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)
}
func application(application: UIApplication, handleActionWithIdentifier identifier: String?,
forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {
if identifier == NotificationActionOneIdent {
NSNotificationCenter.defaultCenter().postNotificationName("ONE",object: nil)
}else if identifier == NotificationActionTwoIdent {
NSNotificationCenter.defaultCenter().postNotificationName("TWO",object: nil)
} completionHandler()
}
2.要处理的事件
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "TestShape:", name: "ONE", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "TestMessage:", name: "TWO", object: nil)
self.notification()
}
func notification() {
var dateNow:NSDate = NSDate(timeIntervalSinceNow: 5)
var notification:UILocalNotification = UILocalNotification()
notification.fireDate = dateNow
notification.hasAction = true
notification.category = "ACTIONABLE"//如果不把这两个category联系起来,新特性根本无法实现
notification.alertBody = "新消息来了!"
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
func TestShape(notification: NSNotification) {
var view:UIView = UIView(frame: CGRectMake(100,100,100,100));
view.backgroundColor = UIColor.blueColor()
self.view.addSubview(view)
}
func TestMessage(notification: NSNotification) {
var message: UIAlertController = UIAlertController(title: "Hello", message: "推送通知",
preferredStyle: UIAlertControllerStyle.Alert)
message.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(message, animated: true, completion: nil)
}