1

私の PhoneGap 1.3 オフライン アプリでは、公式のプラグイン GitHub ページにある変更された iOS ローカル通知プラグインを使用しています。

ユーザー定義の設定に基づいて、繰り返し通知 (毎週/毎月)、または 2 週間ごとに発生する複数の単一通知をスケジュールする必要があります。

この問題は、これらの 26 個の通知を 2 週間ごとに起動するようにスケジュールしようとしているときに発生します。

現在、私はそれを達成するためにこれを使用しています:

for (int i = 1; i < 26; i++)
{
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];

    if (localNotif == nil) {
        return;
    }

    NSDate *date = [[NSDate date] dateByAddingTimeInterval: i * 60 * 60 * 24 * 7 * 2];

    localNotif.fireDate = date;
    localNotif.timeZone = [NSTimeZone defaultTimeZone];
    localNotif.alertBody = [NSString stringWithFormat:@"%i: %@", i, msg];

    localNotif.hasAction = NO;
    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 0;

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];        

    [localNotif release];

}

これを iPhone 3G または iPod Touch 2 で実行すると、UI が約 3 ~ 5 秒間フリーズします。スケジューリング通知を最適化する方法はありますか?

毎週および毎月の繰り返し通知のみを使用することで問題が解決することはわかっていますが、クライアントは、、、および通知を希望しているevery 2 weeksためevery 2 monthsevery 3 months複数の通知をスケジュールする必要があります。

新しい問題を引き起こす新しいスレッドでループを実行しようとしました[NSThread detachNewThreadSelector:...](時々クラッシュします)。

3Gの後にリリースされたiPhoneは、遅延/フリーズが存在しないほど高速ですか? テストする古代のデバイスは 2 つしかありません。

4

1 に答える 1

1

これを使用して、バックグラウンドスレッドで作成を実行することをお勧めします。(void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

または、プロセスを再考しようとします。おそらく、2週間分のリマインダーを一度に作成する代わりに、カップルを作成し、残りを作成するために何か他のものを設定するだけです。または、1つを作成して繰り返しブール値を格納するだけでも、起動時に次のブール値も作成されます。

于 2012-05-23T12:04:24.727 に答える