2012-04-26 53 views
3

我正在開發一個項目,每天在不同時間通知用戶,每天從預定義的數據庫通知用戶,每天準確地進行五次。我的問題是如何安排所有這些時間,5次* 365天= 1825年的火日期!有可能安排他們全部?每天在不同時間發出本地通知

任何想法將是非常讚賞

+0

你如何處理本地通知在後臺你有什麼想法? – ilhnctn 2012-04-26 22:10:10

回答

12

根據蘋果文檔:

的應用程序只能有計劃通知的數量有限;該系統保持最快發射64通知(與自動重新安排的通知計爲一個單一的通知),並丟棄其餘

我通過設置通知的「隊列」解決了這個問題。例如,在我的應用程序中,我有三種不同類型的通知,我們只是說類型A,B和C.

我安排下個月的A,B和C通知,每當用戶打開應用程序時,我檢查了多少通知。例如,如果不再有A通知,則該應用會安排更多的A通知等等。

我如何實現這一目標?

每次我安排通知時,我都會使用userInfo屬性。我用一個叫做type的鍵和一個值來設置字典。

在我的應用程序委託中,我檢查所有待處理的通知並計算每種類型的剩餘數量。代碼如下所示:

NSArray *scheduledNotifications = [UIApplication scheduledLocalNotifications]; 

NSUInteger AType, BType, CType; 

for (UILocalNotification *notif in scheduledNotifications) { 
     //Classify notifications by type 
     NSUInteger notifType = [[notif.userInfo objectForKey:@"type"]integerValue]; 
     if (notifType == 0) { 
      AType++; 
     }else if(notifType == 1){ 
      BType++; 
     }else{ 
      CType++; 
     } 

} 

如果任何類型的計數爲零,則應用程序會計劃更多通知。

最後,如果通知是節目例如,在每天的同一時間,你可以使用repeatInterval財產你不能創建自己的重複間隔,你只能使用NSCalendarUnit定義的重複間隔。

希望它有幫助。

+0

是的,我使用過類似的東西 - 創建隊列或待定通知的有序列表,並在應用程序打開時通過它,等等。(重新)按日期順序安排通知。事實上,通過這個方案,你只需要一個未完成的通知,因爲它的「含義」被記錄在你的隊列中(儘管安排好幾個以便「通知到達」並且徽章號碼或多或少符合預期該應用程序沒有運行)。 – 2012-04-27 01:13:47

+0

@Edu這幫了我很大的忙,但是我想到了但是不知道如何實現它,但是因爲每次用戶將應用程序關閉後,我都會計劃一整年安排一組通知確保沒有未完成的通知,1825年將重複明年的同一時間,所以如果我將repeatInterval屬性設置爲kCFCalendarUnitYear,我不必在明年安排更多通知,對嗎? – 4mahmoud 2012-04-27 10:29:03

+0

是的,我發現NSCalendarUnit有點棘手,所以我建議你設置一些通知,並自己看看它們是如何工作的。更改我的iPhone日期可以幫助我瞭解如何使用repeatingInterval,因此我鼓勵您這樣做。提及具有repeatInterval的通知計爲ONE通知也很重要。 :) – Edu 2012-04-28 00:17:24

1

您可以嘗試Eventkit使用該框架可以添加提醒,事件和警報。

1)它沒有像UILocalNotification這樣的通知限制數量。

2)使用事件工具包,您可以添加基於時間以及基於位置的事件。

3)你也不需要擔心隱私。

雖然UILocalNotification和EventKit都在它自己的權利強大..

需要注意的是:IOS 6或以上EventKit框架

這是您高達選擇哪一個,這取決於你的需求。

以下鏈接會給你很好的領先地位

Resource 1

Resource 2

下面的圖片會給你一個很好的偷看什麼evenkit是。

EventKit_image

使用eventkit它是否適合您的需要。

相關問題