Swift - 本地消息的推送通知(附样例)

前端之家收集整理的这篇文章主要介绍了Swift - 本地消息的推送通知(附样例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用UILocalNotification可以很方便的实现消息的推送功能。我们可以设置这个消息的推送时间,推送内容等。
当推送时间一到,不管用户在桌面还是其他应用中,屏幕上方会都显示出推送消息。

1,推送消息的发送


--- AppDelegate.swift ---
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
}
applicationWillResignActive(application: ) {
}
applicationDidEnterBackground(application: ) {
}
applicationWillEnterForeground(application: ) {
}
applicationDidBecomeActive(application: ) {
}
applicationWillTerminate(application: ) {
}
}

--- ViewController.swift ---
ViewController UIViewController {
override viewDidLoad() {
super .viewDidLoad()
//发送通知消息
scheduleNotification(12345);
//清除所有本地推送
//UIApplication.sharedApplication().cancelAllLocalNotifications()
}
//发送通知消息
scheduleNotification(itemID: Int ){
//如果已存在该通知消息,则先取消
cancelNotification(itemID)
//创建UILocalNotification来进行本地消息通知
localNotification = UILocalNotification ()
//推送时间(设置为30秒以后)
localNotification.fireDate = NSDate (timeIntervalSinceNow: 30)
//时区
localNotification.timeZone = NSTimeZone .defaultTimeZone()
//推送内容
localNotification.alertBody = "来自hangge.com的本地消息"
//声音
localNotification.soundName = UILocalNotificationDefaultSoundName
//额外信息
localNotification.userInfo = [ "ItemID" :itemID]
.sharedApplication().scheduleLocalNotification(localNotification)
}
//取消通知消息
cancelNotification(itemID: ){
//通过itemID获取已有的消息推送,然后删除掉,以便重新判断
existingNotification = self .notificationForThisItem(itemID) as ?
if existingNotification != {
//如果existingNotification不为nil,就取消消息推送
.sharedApplication().cancelLocalNotification(existingNotification!)
}
}
//通过遍历所有消息推送,通过itemid的对比,返回UIlocalNotification
notificationForThisItem(itemID: )-> ? {
allNotifications = .sharedApplication().scheduledLocalNotifications
for notification in allNotifications! {
info = notification.userInfo as ! [ String ]
number = info[ ]
number != && number == itemID {
return UILocalNotification
}
}
nil
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}

2,点击推送消息的响应
收到推送,如果点击推送内容,则会重新进入到App,这个时候会调用AppDelegate中的func application(application: UIApplication,didReceiveLocalNotification notification: UILocalNotification)代理方法
在这个方法中我们可以根据推送的消息内容实现相关的功能

didReceiveLocalNotification notification: ) {
//设定Badge数目
.sharedApplication().applicationIconBadgeNumber = 0
]
]
alertController = UIAlertController (title: "本地通知" message: "消息内容:\(notification.alertBody)用户数据:\(number)" preferredStyle: UIAlertControllerStyle . )

let cancel = UIAlertAction(title: "取消",style: UIAlertActionStyle.Cancel,handler: nil);

alertController.addAction(cancel);

.window?.rootViewController!.presentViewController(alertController,
animated: true )
}

猜你在找的Swift相关文章