簡體   English   中英

如何解除我的應用在后台時出現的UILocalNotifications?

[英]How can I dismiss UILocalNotifications that appear when my app is in the background?

我正在開發一款iPhone應用,需要提醒用戶使用UILocalNotifications定期辦理登機手續。 如果他們沒有辦理登機手續幾個小時,可能會提醒他們幾次,但我只是想顯示最新的通知。

現在,如果應用程序處於打開狀態,我會收到didReceiveLocalNotification :( UILocalNotification *)通知的回調,我可以跟蹤是否有通知顯示。

如果應用程序未運行且用戶單擊-action-按鈕,則會收到回調

  • (BOOL)應用程序:(UIApplication *)應用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

所以我可以解雇任何舊的通知。 但是,如果他們單擊“取消”,他們必須在一堆分層通知上單擊“取消”,因為據我所知,我沒有得到回調(如果應用程序未啟動,我該怎么辦)並且在創建UILocalNotification時,似乎沒有標記或其他內容,以便從應用程序中自動關閉其他提醒。

如果應用程序在后台但正在運行,那就更糟了 - 首先,如果用戶單擊取消,我沒有得到任何類型的回調,所以我遇到了同樣的問題 - 用戶必須單擊取消很多次。 其次,如果他們單擊動作,我會調用ApplicationDidBecomeActive,但是沒有區別,當用戶只是來回切換時; 我可以在這里解雇並重新安排它們,但它似乎並不完美,有時會在它們被解雇之前彈出一些。

有什么建議么? 如果有一種方法可以讓通知自動過期,那也很棒。 我在網上看了一下,並沒有找到太多的幫助,但這似乎是一個很大的疏忽,所以希望有一些方法來優雅地處理這個。

謝謝。

當您指出用戶“取消”時,您將無法獲得任何回調。

在您的情況下,是否可以只提醒用戶一次? 僅一次安排一個通知,並在應用啟動/恢復時續訂。

我還沒有嘗試過以下內容,但我相信這可以解決您的問題。 使用CLLocationManagerstartMonitoringSignificantLocationChanges

每當設備的位置發生顯着變化時,您的應用程序將在后台啟動,並將選項傳遞給locationManager:didUpdateLocations:您可以從那里安排UILocalNotification

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM