1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import UIKit @UIApplicationMain class AppDelegate : UIResponder , UIApplicationDelegate { var window: UIWindow ? func application(application: UIApplication , didFinishLaunchingWithOptions launchOptions: [ NSObject : AnyObject ]?) -> Bool { //开启通知 let settings = UIUserNotificationSettings (forTypes: [. Alert , . Badge , . Sound ], categories: nil ) application.registerUserNotificationSettings(settings) return true } func applicationWillResignActive(application: UIApplication ) { } func applicationDidEnterBackground(application: UIApplication ) { } func applicationWillEnterForeground(application: UIApplication ) { } func applicationDidBecomeActive(application: UIApplication ) { } func applicationWillTerminate(application: UIApplication ) { } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import UIKit class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() //发送通知消息 scheduleNotification(12345); //清除所有本地推送 //UIApplication.sharedApplication().cancelAllLocalNotifications() } //发送通知消息 func scheduleNotification(itemID: Int ){ //如果已存在该通知消息,则先取消 cancelNotification(itemID) //创建UILocalNotification来进行本地消息通知 let localNotification = UILocalNotification () //推送时间(设置为30秒以后) localNotification.fireDate = NSDate (timeIntervalSinceNow: 30) //时区 localNotification.timeZone = NSTimeZone .defaultTimeZone() //推送内容 localNotification.alertBody = "来自hangge.com的本地消息" //声音 localNotification.soundName = UILocalNotificationDefaultSoundName //额外信息 localNotification.userInfo = [ "ItemID" :itemID] UIApplication .sharedApplication().scheduleLocalNotification(localNotification) } //取消通知消息 func cancelNotification(itemID: Int ){ //通过itemID获取已有的消息推送,然后删除掉,以便重新判断 let existingNotification = self .notificationForThisItem(itemID) as UILocalNotification ? if existingNotification != nil { //如果existingNotification不为nil,就取消消息推送 UIApplication .sharedApplication().cancelLocalNotification(existingNotification!) } } //通过遍历所有消息推送,通过itemid的对比,返回UIlocalNotification func notificationForThisItem(itemID: Int )-> UILocalNotification ? { let allNotifications = UIApplication .sharedApplication().scheduledLocalNotifications for notification in allNotifications! { let info = notification.userInfo as ! [ String : Int ] let number = info[ "ItemID" ] if number != nil && number == itemID { return notification as UILocalNotification } } return nil } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
func application(application: UIApplication , didReceiveLocalNotification notification: UILocalNotification ) { //设定Badge数目 UIApplication .sharedApplication().applicationIconBadgeNumber = 0 let info = notification.userInfo as ! [ String : Int ] let number = info[ "ItemID" ] let alertController = UIAlertController (title: "本地通知" , message: "消息内容:\(notification.alertBody)用户数据:\(number)" , preferredStyle: UIAlertControllerStyle . Alert ) self .window?.rootViewController!.presentViewController(alertController, animated: true , completion: nil ) } |
原文:http://www.cnblogs.com/Free-Thinker/p/4841087.html