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

 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 接收到本地通知") 
   }

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...