您的位置:首页 > 移动开发 > Swift

swift开发笔记25 定时的本地通知

2016-03-29 14:03 393 查看
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

//1.创建UIUserNotificationSettings,并设置消息的显示类类型
let pushtypes : UIUserNotificationType = [UIUserNotificationType.Badge,UIUserNotificationType.Alert,UIUserNotificationType.Sound]
let userSetting = UIUserNotificationSettings(forTypes: pushtypes  , categories:nil)

//2.注册推送
//本地通知只有app位于后台才会显示
application.registerUserNotificationSettings(userSetting)
//远程通知
//application.registerForRemoteNotificationTypes([UIRemoteNotificationType.Alert,UIRemoteNotificationType.Badge,UIRemoteNotificationType.Sound])

//3.添加本地推送和设置固定时间推送了
self.sendNotification()
}

//添加本地推送和设置固定时间推送了
func sendNotification( ) {
// //取消所有的本地通知
UIApplication.sharedApplication().cancelAllLocalNotifications()
//数字清零
UIApplication.sharedApplication().applicationIconBadgeNumber = 0

let localNotificationAM = UILocalNotification()
//设置为5妙后localNotificationAM.fireDate = NSDate(timeIntervalSinceNow: 5)
//早九点提醒上班打卡
localNotificationAM.fireDate = getFireDate(9.0)
localNotificationAM.repeatInterval = NSCalendarUnit.Day
localNotificationAM.timeZone = NSTimeZone.defaultTimeZone()
localNotificationAM.alertBody = "别忘上班打卡啊"
localNotificationAM.applicationIconBadgeNumber =  1
localNotificationAM.soundName = UILocalNotificationDefaultSoundName
UIApplication.sharedApplication().scheduleLocalNotification(localNotificationAM)

let localNotificationPM = UILocalNotification()
//下午6点提醒打卡
localNotificationPM.fireDate = getFireDate(18.5)
localNotificationAM.repeatInterval = NSCalendarUnit.Day
localNotificationPM.timeZone = NSTimeZone.defaultTimeZone()
localNotificationPM.alertBody = "别忘下班打卡和写日志啊"
localNotificationPM.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
localNotificationPM.soundName = UILocalNotificationDefaultSoundName

UIApplication.sharedApplication().scheduleLocalNotification(localNotificationPM)
print("@@@@@@@@@@@@@@@@@@注册上午和下午的本地通知 每天重复")
}
//24小时制
func getFireDate( hourOfDay:Float)->NSDate{
//本地推送时间 hourOfDay
let pushTime: Float =  hourOfDay*60*60
let date = NSDate()
let dateFormatter = NSDateFormatter()
//日期格式为“时,分,秒”
dateFormatter.dateFormat = "HH,mm,ss"
//设备当前的时间(24小时制)
let strDate = dateFormatter.stringFromDate(date)
//将时、分、秒分割出来,放到一个数组
let dateArr = strDate.componentsSeparatedByString(",")
//统一转化成秒为单位
let hour = ((dateArr[0] as NSString).floatValue)*60*60
let minute = ((dateArr[1] as NSString).floatValue)*60
let second = (dateArr[2] as NSString).floatValue
var newPushTime = Float()
if hour > pushTime {
newPushTime = 24*60*60-(hour+minute+second)+pushTime
} else {
newPushTime = pushTime-(hour+minute+second)
}
return  NSDate(timeIntervalSinceNow: NSTimeInterval(newPushTime))
}


//点击通知打开app
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
print("didReceiveLocalNotification 接收到本地通知")
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift notify