Swift - 本地消息的推送通知(附样例)
生活随笔
收集整理的這篇文章主要介紹了
Swift - 本地消息的推送通知(附样例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用UILocalNotification可以很方便的實現消息的推送功能。我們可以設置這個消息的推送時間,推送內容等。 當推送時間一到,不管用戶在桌面還是其他應用中,屏幕上方會都顯示出推送消息。
1,推送消息的發送 ??
--- AppDelegate.swift ---
--- ViewController.swift ---
2,點擊推送消息的響應 收到推送,如果點擊推送內容,則會重新進入到App,這個時候會調用AppDelegate中的func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification)代理方法。 在這個方法中我們可以根據推送的消息內容實現相關的功能。
1,推送消息的發送 ??
--- AppDelegate.swift ---
| 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) { ????} } |
--- ViewController.swift ---
| 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() ????} } |
2,點擊推送消息的響應 收到推送,如果點擊推送內容,則會重新進入到App,這個時候會調用AppDelegate中的func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification)代理方法。 在這個方法中我們可以根據推送的消息內容實現相關的功能。
| 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) } |
總結
以上是生活随笔為你收集整理的Swift - 本地消息的推送通知(附样例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Leetcode】Palindrome
- 下一篇: 【AndroidStudio】关于SVN