2012-05-23 27 views
1

在我的PhoneGap 1.3離線應用程序中,我正在使用官方插件GitHub頁面中找到的已修改iOS本地通知插件。如何在不凍結UI的情況下安排多個本地通知?

根據用戶定義的設置,我需要安排一個重複通知(每週/每月),或每兩週觸發多個單一通知。

當我試圖計劃每隔2周觸發這26個通知時,就會出現問題。

目前我使用這個實現是:

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是否會延遲/凍結快得多?我只有那兩個古代設備可以測試。

回答

1

我建議無論是在使用這個後臺線程進行創作:(void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

或者我會嘗試重新思考的過程。也許而不是一次創造一個多年的兩週提醒,只是創建一對夫婦,並設置其他的東西來創建其餘的。或者,甚至可以創建一個並存儲一個重複布爾,所以當它觸發時也會創建下一個布爾。

+0

我已經嘗試過創建一個,然後當它被解僱時重新安排另一個。但問題是它只在應用程序運行或在後臺運行時才起作用。我的appDelegate的didReceiveLocalNotification我創建了一個新的通知並安排它。 「你的意思是」存儲一個重複的布爾,所以當它啓動時它也創建下一個「。一個例子非常感謝。 :) – micadelli

+0

我只是純粹的說,如果你已經嘗試過,它不起作用,我相信你。 –

相關問題