2011-11-15 2 views
6

私はUILocalNotificationを使用しているアプリを作っています。私はUILocalNotificationのギャップを作る方法、つまり、4週間(1日おきに1回、または1日おきに1回)アラームをスケジュールする方法と、1週間オフにして再度4週間、1週間オフにするなどの方法を知りたい。これはただのケースです。これらのギャップは動的であり、実行時に決定されます。周期と一緒にUILocalNotificationで週の間隔を作成する

+0

まだお答えしていないその一週間今 – Neha

答えて

0

特殊な繰り返しスキームが必要なので、repeatIntervalを使用することはできません。私はあなたがお持ちしたい日ごとにローカル通知をスケジュールする必要が思う:4週間の第二の期間の各日の最初の4週間、

  • 28通知の毎日の

    • 28通知、
    • のように...

    助けるかもしれないいくつかのコード:

    /** 
        This method will schedule 28 notifications, each 24 hours exactly for 4 weeks, 
        starting from dayOne (first notification will be at dayOne, the second one 
        at dayOne + 24 hours..., so be sure to choose the hour you want by setting 
        dayOne correctly. 
    */ 
    - (void)scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:(NSDate *)dayOne { 
    
        // Schedule notifications for each day during 4 weeks starting at dayOne 
        NSMutableArray *notifications = [NSMutableArray array]; 
        for (int i = 0; i < 28; i++) { 
        [notifications addObject:notificationForDay(dayOne, i)]; 
        } 
        for (UILocalNotification *notification in notifications) { 
        [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 
        } 
    } 
    
    UILocalNotification *notificationInSomeDays(NSDate *referenceDate, NSUInteger some) { 
        UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease]; 
    
        // Notification timing 
        NSUInteger days = 60*60*24; // number of seconds in a day 
        notification.fireDate = [referenceDate dateByAddingTimeInterval:some * days]; 
        notification.timeZone = [NSTimeZone localTimeZone]; // use local time zone if your reference date is a local one, or choose the appropriate time zone 
    
        // define your notification content... 
    
        return notification; 
    } 
    

    あなたが0123を使用することができますメソッドを使用して、4週間の各期間に必要な28の通知をスケジュールします。これで、通知を開始する4週間ごとの最初の日に呼び出すことで、必要なだけ頻繁に実行することができます。

    アプリが起動したら、現在のローカル通知をすべて消去して、要件に合わせて再スケジュールする必要があります。特に、通知を実行する4週間の期間中にアプリを起動するかどうかを調整する必要があります。この場合、予定されている通知の数を減らすために提案されたscheduleLocalNotificationsEachDayFor4WeeksStartingFromの方法を調整する必要があります...

  • 0

    彼女はこれらのガオがダイナミックであると言うことを意味します。したがって、彼女は最初の4週間、 2番目の期間などの28の通知....これは、アプリケーションごとに64のローカル通知を交わす.......これらのギャップは、何かになることができるダイナミックなことを意味します。それからurメソッドによって、彼女は1つの薬(十字制限)のための84の通知を設定しなければなりませんし、確かにこれらの種類の複数の薬です...

    +0

    私は問題で説明されていない問題を見ることができます。私は解決策は見当たりませんが、ユーザが時々アプリケーションを起動しなければならないということを除けば、適切な通知を制限内で設定することができます(これは私が気づいていませんでした)。プッシュ通知を使用することもできます。ところで、答えとしてコメントを書くのではなく、自分の答えにコメントを書いておくべきだと思います。 – rchampourlier

    関連する問題