2011-02-06 13 views
0

私はUILocalNotificationを使用し、タイムゾーンを自分のデフォルトよりも別のタイムゾーンに設定しようとしています。デフォルトのタイムゾーン以外のUILocalNotification

- ユーザが時刻と時間帯を指定してアラートをスケジュールします - タイムゾーンが指定時刻になると警告を表示します。

私はロサンゼルスに住んでいて、私のgfはシカゴにいるとしましょう。私はシカゴが平日の午前7時にアラートを設定したい。

1つのアラートについては、絶対時間を行うためにタイムゾーンなしで行うことができます。しかし、私はユーザーにリピートフラグを設定させたいと思っています。そのような場合はできません。上記の例のようにlocalnotificationのtimezoneプロパティをシカゴに設定しようとしましたが、ローカル通知は発生しません。

私は、シリアル化プロセスの間にuinocalnotificationを記録し、ここで一つの出力です:

"<UIConcreteLocalNotification: 0xfb25a50>{fire date = 2011-02-06 06:02:00 -0800, time zone = America/Chicago (CST) offset -21600, repeat interval = 16, next fire date = 2011-02-06 08:02:00 -0800}" 

私は9:02シカゴ絶対時間firedateを設定し、タイムゾーンがCSTする - とログが火災日があることを言及しません確かに私の現地時間は06:02です。しかし、何も起こらない。また、次の火事日は+2時間ではなく+1日でなければならないので奇妙です。

これを設定する方法は次のとおりです。 クラスclassUILocalNotification = NSClassFromString(@ "UILocalNotification");

if (classUILocalNotification != nil) { 
    id note = [[classUILocalNotification alloc] init]; 

    NSString *body = @"body message";  
    switch (repeatflag) { 
     case 1: [note setRepeatInterval:NSDayCalendarUnit]; break; 
     case 2: [note setRepeatInterval:NSWeekdayCalendarUnit]; break; 
     case 3: [note setRepeatInterval:NSWeekCalendarUnit]; break; 
     case 4: [note setRepeatInterval:NSMonthCalendarUnit]; break; 
     case 5: [note setRepeatInterval:NSYearCalendarUnit]; break; 
     default: break; 
    } 
    [note setFireDate:dt]; 
    [note setAlertBody:body]; 
    [note setTimeZone:timezone];     
    [note setHasAction:NO]; 
} 

これは不明な動作のようです。誰でも私がやろうとしていることを達成するためのより良い方法がありますか? ありがとう!

+0

正確な問題を確認できるようにいくつかのコードを投稿してください!! – KingofBliss

+0

こんにちはkongofbliss、返信いただきありがとうございます。 UILocalNotification(UILN)の問題は、現在のtz以外のもので発生するように設定しているようです。私は何を正確に把握していないが、現在のtzではなく、発射日がテスト(ios4.0.2)で混ざっているようだ。 これを回避するには、タイムゾーン情報を設定せずにユーロカルノーティをスケジュールするだけでした。したがって、日付は絶対値として解釈され、正しく発生します。 ところで、これをやろうとしている人には、アプリをアンインストールしてからアプリを再インストールすると、ios4.0のバグがあります。以前のインストールのUILNセットが新しいアプリに表示されます。 – Landasia

答えて

0

ローカル以外のタイムゾーンを使用すると、UILocalNotificationにバグがあるようです。最初に発生したイベントは、正しい日時とタイムゾーンで起動されます。ただし、その後のイベントは、setTimeZoneメソッドで設定されている時刻ではなく、ローカルのタイムゾーンで指定された日付と時刻に発生します。 [iOS 6.1]

関連する問題