2016-07-30 8 views
0

私のコードに問題があります。すぐに週刊ローカル通知を設定する方法

xcode7にローカル通知を設定したいのですが、私はあなたの大学のコースを配置できるカレンダーを開発していますが、私はjsonデータベースからスケジュールを取得しています。クラスが始まりますが、私のコードがなぜ機能していないのかわかりません。

これは、毎週月曜日の13:40に通知を繰り返す場合の例です。

曜日と時間のみ設定できますか?または月と年を指定する必要がありますか?

var dateComp:NSDateComponents = NSDateComponents() 

    dateComp.day = 01; 
    dateComp.hour = 13; 
    dateComp.minute = 40; 
    dateComp.timeZone = NSTimeZone.systemTimeZone() 

    var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    var date:NSDate = calender.dateFromComponents(dateComp)! 

    let notification = UILocalNotification() 
    notification.fireDate = date 
    notification.alertBody = "Swipe to unlock" 
    notification.alertAction = "You've got a class soon!" 
    notification.soundName = UILocalNotificationDefaultSoundName 
    notification.userInfo = ["CustomField1": "w00t"] 
    notification.repeatInterval = NSCalendarUnit.WeekOfYear 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
+0

ローカル –

+0

http://stackoverflow.com/a/34575836/2303865にご通知タイムゾーンを設定する必要があります –

答えて

0

この機能をチェックしてください

func setLNotification(weekDay:Int , hour:Int, min:Int, second:Int, alertBody:String, type:String, isRepeate:Bool){ 
    let calender = NSCalendar(identifier: NSCalendarIdentifierGregorian) 
    let dateComp: NSDateComponents? 
    let components: NSDateComponents = NSDateComponents() 

    if weekDay > 0{ 
     components.setValue(-50, forComponent: NSCalendarUnit.Year) 

     let previousDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))! 
     dateComp = calender?.components([.Year,.WeekOfMonth,.Month], fromDate: previousDate) 
     dateComp?.hour = hour 
     dateComp?.minute = min 
     dateComp?.second = second 
     dateComp?.weekday = weekDay 
    }else{ 
     components.setValue(hour, forComponent: NSCalendarUnit.Hour) 
     components.setValue(min, forComponent: NSCalendarUnit.Minute) 
     components.setValue(second, forComponent: NSCalendarUnit.Second) 
     let notifiDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))! 
     dateComp = calender?.components([.Year,.Month,.Day,.Hour,.Minute,.Second], fromDate: notifiDate) 
    } 

    let notification = UILocalNotification() 
    if isRepeate == true{ 
     notification.repeatInterval = NSCalendarUnit.WeekOfYear 
     notification.repeatCalendar = calender 
    } 
    notification.fireDate = calender?.dateFromComponents(dateComp!) 
    notification.alertBody = alertBody 
    notification.userInfo = ["day":"\(weekDay)","type":"\(type)"] 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
} 
関連する問題