2012-07-03 15 views
9

私はこれは私がiPhone:毎日地元の通知

// Current date 
    NSDate *date = [NSDate date]; 

    // Add one minute to the current time 
    NSDate *dateToFire = [date dateByAddingTimeInterval:20]; 

    // Set the fire date/time 
    [localNotification setFireDate:dateToFire]; 
    [localNotification setTimeZone:[NSTimeZone defaultTimeZone]]; 

の代わりに20を設定したものであるローカル通知に

を実装しようとしていますが、私はプッシュを開始するために一定時間(毎日)を載せていきたいと思います。

例:通知を6:00 AMごとにプッシュしたい。

どうすればいいですか?

おかげ

答えて

27

はあなただけ正しく火災の日付(時間)なるようにNSDateオブジェクトを作成する必要があります。代わりに[NSDate dateByAddingTimeInterval: 20]を使用しての、このようなものを使用しますと同じように

[localNotification setFireDate: dateToFire]; 
[localNotification setTimeZone: [NSTimeZone defaultTimeZone]]; 
[localNotification setRepeatInterval: kCFCalendarUnitDay]; 

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [[NSDateComponents alloc] init]; 
[components setDay: 3]; 
[components setMonth: 7]; 
[components setYear: 2012]; 
[components setHour: 6]; 
[components setMinute: 0]; 
[components setSecond: 0]; 
[calendar setTimeZone: [NSTimeZone defaultTimeZone]]; 
NSDate *dateToFire = [calendar dateFromComponents:components]; 

Here are the Apple NSDateComponents API docs

をそしてあなたは、通知に日付を追加するときに、1日に繰り返し間隔を設定しますあなたのタイムゾーンが夏時間を使用している場合は、夏時間に切り替える際にどのように動作するかテストしてください。

+0

コンソールで、「2012-07-03 00:30:00 +0000」という火災の日付を見つけようとしました。これは毎日火災ですか? – iscavengers

+0

@iscavengers上記のコードで示したように、繰り返し間隔を 'kCFCalendarUnitDay'に設定すると、毎日起動します – Nate

+0

これはどのようにSWIFTに変換されますか? –

3

あなたが必要と思われるのはです。NSDayCalendarUnitです。

thisの回答を確認できます。そしてhereは読む価値のある別のチュートリアルです。

1
NSDate *alertTime = [[NSDate date] dateByAddingTimeInterval:10]; 
    UIApplication* app = [UIApplication sharedApplication]; 

    UILocalNotification* notifyAlarm = [[[UILocalNotification alloc] init] autorelease]; 
    if (notifyAlarm) 
    { 
     notifyAlarm.fireDate = alertTime; 
     notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; 
     notifyAlarm.repeatInterval = 0; 
     notifyAlarm.soundName = @"Glass.aiff"; 
     notifyAlarm.alertBody = @"Staff meeting in 30 minutes"; 

     [app scheduleLocalNotification:notifyAlarm]; 
    } 
関連する問題