2016-03-03 35 views
0

你好我想安排本地通知在上午9點到火平日(週一 - 週五)特定的時間和不能似乎找到如何做到這一點的任何文檔。這是我到目前爲止的代碼:斯威夫特:安排本地通知平日

@IBAction func scheduleLocal(sender: UIButton) { 
    guard let settings = UIApplication.sharedApplication().currentUserNotificationSettings() else { return 
    } 
    if settings.types == .None { 
     let ac = UIAlertController(title: "Cant Schedule", message: "No Permission", preferredStyle: .Alert) 
     ac.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) 
     presentViewController(ac, animated: true, completion: nil) 
     return 
    } 
    let notification = UILocalNotification() 
    notification.fireDate = NSDate() 
    notification.alertBody = "Come Exercise" 
    notification.alertAction = "Exercise Time" 
    notification.soundName = UILocalNotificationDefaultSoundName 
    notification.userInfo = ["customField1": "w00t"] 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
} 

,並在viewDidLoad中:

let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
    UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings) 
+0

因爲我不知道該如何放入它,所以我覺得已經開除了。 –

+0

您將需要安排5周的通知,即重複每週 – Paulw11

+0

感謝您的答覆。如何添加對通知的日期和時間爲它雖然? –

回答

0

這是我的課例如,你可以使用它,只要你想,我也支持阿拉伯數字翻譯成英語阿拉伯語。

// 
// notification.swift 
// NSFetchController Pro 
// 
// Created by Mr.Geeker on 08/02/15. 
// Copyright (c) 2015 X2coder. All rights reserved. 
// 

import UIKit 

class notification { 


    func createNotification(#hour:String, day:String, msgBody:String)->Bool 
    { 
     if(self.checkifNotificationOnOrOff()) 

     { 



      //println("\(araToString(hour))") 

      var dateFormatter:NSDateFormatter = NSDateFormatter() 

      dateFormatter.locale = NSLocale.currentLocale() 
      dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle 
      dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle 
      var convertedTime:String = "" 

      var testDate:NSDate = NSDate() 

      var timeFormat:NSString = dateFormatter.stringFromDate(testDate) 

      // Get the range of date (AM OR PM) 
      var amRange:NSRange = timeFormat.rangeOfString(dateFormatter.AMSymbol) 
      var pmRange:NSRange = timeFormat.rangeOfString(dateFormatter.PMSymbol) 

      var is24h:Bool = (amRange.location == NSNotFound && pmRange.location == NSNotFound) 
      if is24h { 

       araToString(hour) 

      }else{ 

       var dateFormatter2:NSDateFormatter = NSDateFormatter() 
       dateFormatter2.dateFormat = "HH:mm" 

       var hourDate:NSDate = dateFormatter2.dateFromString(hour)! 

       var pmAmDateString:NSString = dateFormatter2.stringFromDate(hourDate) 

       convertedTime = pmAmDateString 
       println(convertedTime) 

      } 


      var hourAndMiOnly:NSArray = convertedTime.componentsSeparatedByString(":") 
      var onlyHour:Int = 0 
      var onlyMinuts:Int = 0 

      for var i:Int = 0; i < 2; i++ { 

       for thimes in hourAndMiOnly 
       { 
        if i == 0 
        { 
         onlyMinuts = thimes.integerValue 

        } 
        if i == 1 { 
         // we should add -1 before the class 
         onlyHour = (thimes.integerValue) 
         if onlyHour < 1 
         { 
          onlyHour = 00 
         } 
         break 
        } 

       } 
      } 


      let DaysDic = [0:"None",1:"Sunday",2 :"Monday",3 :"Tuesday",4 :"Wednesday",5 :"Thursday",6 :"Friday",7 :"Saturday"] 

      var ConvertDayToInt:Int?{ 

       for (key,value) in DaysDic 
       { 
        if value == day 
        { 
         return key 
        } 

       } 
       return nil 
      } 

      //println("Hour is \(onlyHour) And Minut \(onlyMinuts) AND Day \(ConvertDayToInt)") 

      let date = NSDate() 
      var userInfo: [NSObject : AnyObject]? 

      var createCalender:NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)! 
      var dateComponenet:NSDateComponents = createCalender.components(NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.WeekCalendarUnit, fromDate: date) 
      dateComponenet.weekday = ConvertDayToInt! 
      dateComponenet.hour = onlyHour 
      dateComponenet.minute = onlyMinuts 


      var fireDateToRun:NSDate = createCalender.dateFromComponents(dateComponenet)! 

      var notificationClass:UILocalNotification = UILocalNotification() 
      notificationClass.alertBody = msgBody 
      notificationClass.fireDate = fireDateToRun 
      notificationClass.soundName = UILocalNotificationDefaultSoundName 
      notificationClass.repeatInterval = NSCalendarUnit.WeekCalendarUnit 
      notificationClass.timeZone = NSTimeZone.defaultTimeZone() 
      notificationClass.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1 

      UIApplication.sharedApplication().scheduledLocalNotifications = [notificationClass] 


     }else{ 

      // call protocol function not support notification 
     } 

     return true 
    } 



    func araToString(numericString:String)->NSString 
    { 
     var nsMutString:NSMutableString = NSMutableString(string: numericString) 
     let ArabicString:NSString = "١٢٣٤٥٦٧٨٩:" 
     let EnglishString:NSString = "123456789:" 

     for (var i:Int = 0 ; i < ArabicString.length ; i++) 
     { 

      var a:NSString = ArabicString.substringWithRange(NSMakeRange(i, 1)) 

      var w:NSString = EnglishString.substringWithRange(NSMakeRange(i, 1)) 

      nsMutString.replaceOccurrencesOfString(a, withString: w, options: NSStringCompareOptions.LiteralSearch, range:NSMakeRange(0, nsMutString.length)) 


     } 

     return nsMutString 

    } 


    func deleteAll(){ 

     let appnoti = UIApplication.sharedApplication() 
     let delArray = appnoti.scheduledLocalNotifications 
     if delArray.count > 0 
     { 
      appnoti.cancelAllLocalNotifications() 

     } 

    } 

    func checkifNotificationOnOrOff()->Bool 
    { 

     let systemVer:String = UIDevice.currentDevice().systemVersion 

     var finalFloat:Float = NSString(string: systemVer).floatValue 

     if finalFloat < 8 { 

      return false 

     }else{ 

      return true 
     } 



    } 
} 
+0

嗨感謝您的回覆。你能解釋一下它是如何工作的嗎? –

+0

您好,正如您在我的課程中看到的,createNotification(#hour:String,day:String,msgBody:String)此函數通過將字符串和小時中的日期設置爲字符串和通知文本來創建本地通知, 功能araToString將數字轉換從阿拉伯語到英語 如果你想刪除所有通知只是調用deleteAll() 此功能checkifNotificationOnOrOff是檢查通知被登記,好做法,如果你把它的第一個視圖或應用代理 這是關於班級的全部內容,我試圖幫助你,因爲我知道。 –