2016-02-29 36 views
0

我知道這個主題是重複的,但我需要你的幫助。這對我來說非常重要,其他職位對我來說沒有真正的解決方案。64個本地通知的iOS限制

我有一個應用程序(Swift 2),其中用戶可以將條目保存在覈心數據中。這些條目將以表格形式顯示。

用戶必須爲每個條目設置提醒日期(使用日期選擇器)。此日期將用於本地通知的啓動日期。 每個項目獲取2個本地通知

第一把火日期:所選的日期前1周,第二把火日期:選擇日期

的問題是64個本地通知蘋果的限制。 用戶只能保存32個條目(32個條目* 2個通知= 64個通知)

我該如何解決這個限制問題?

我知道我可以在Apple日曆中設置「提醒」而不是本地通知。但這看起來不太好 - 這不應該是解決方案。

我知道我可以檢查每個應用程序的開始或方法確實收到通知,接下來應該設置哪些通知。但爲此我必須相信,用戶啓動應用程序或點擊接收到的通知。如果他或她不這樣做幾天=>沒有新的通知將被設置並且他或她沒有得到下一個通知。這個解決方案不是很安全。

回答

0

我也有過這樣的問題。 所以我做的是我儘可能地計劃了通知,並且當有空間來計劃更多通知時,我計劃了更多的通知。

UIApplication.sharedApplication().scheduledLocalNotifications?.count 

您可以獲得計劃通知的數量。從64中減去並計劃剩餘的通知。

applicationWillEnterForeground你可以做到這一點 -

if UIApplication.sharedApplication().scheduledLocalNotifications?.count < 64 

{ 

     //refersh list 

let nc = NSNotificationCenter.defaultCenter() 
nc.postNotificationName(Constants.SCHEDULE_MORE_NOTIFICATION, object: nil) 

} 

所以您的通知列表會自動刷新。

+0

thx爲您的答案 - 爲什麼我應該用這兩行代碼刷新列表? ,接下來的問題是,如果用戶做了32個條目 - 達到了通知限制,那該怎麼辦?然後他創建一個新條目,這將是最快的通知,但沒有更多空間來註冊通知了嗎? – GhostStack

+0

好吧,一旦有新的通知空間,你就必須註冊新的通知,除非你不能,所以建立一個好的隊列或任何數據結構並不斷刷新列表 –

+0

這個話題對我來說是非常新的。你能告訴我一個例子嗎? :) – GhostStack

1
  1. 你可以定期發送推送通知給沒有聯繫了一段時間的後端,並具有遠程通知處理程序設置本地通知到了極限的設備,看application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

  2. 或者,您可以設置一個後臺提取,使用時重新安排本地通知,參見application(_:performFetchWithCompletionHandler:)。請注意,您無法完全控制此刷新的執行頻率,但根據我的經驗,它每天都會調用多次。

使用上述任一方法時,即使用戶從不打開應用程序,也可以更新本地通知。