2012-03-02 46 views
2

有誰知道如何在UIApplication上使用cancelAllLocalNotifications方法?我想知道iOS如何知道要取消什麼。它是否通過App ID知道?或者它以某種方式使用應用程序的版本號?UIApplication cancelAllLocalNotifications在應用程序更新之間如何工作?

我現在正在經歷的是比我預期更多的通知。這是工作流程:

  1. 取消對應用程序的所有通知開始對應用程序退出
  2. 計劃通知
  3. *調度時,添加通知信息的「最近通話」列表
  4. *調度時,調度每天只有1個通知(在斷開我的電話之前在XCode中的日誌記錄中進行了驗證)。

現在,這是我遇到:

  1. 接收每天4個通知
  2. 只有通知1顯示了在我的「最近通話」列表(其中有意義,因爲這是所有我正在安排)

以前,我每天的通知數設置爲3.然後我更新了「cancelAllLocalNotifications」方法的版本號(比如從1.1.0到1.1.1)調用。

因此,如果取消通知是以任何方式基於應用程序的版本/軟件包ID,我會收到舊通知以及新通知。但是,如果不是,並且iOS知道要取消先前版本1.1.0中安排的通知,那麼我不知道這些附加通知來自哪裏。

+0

在應用程序啓動時,你在哪裏調用cancelAllLocalNofications? – vipinagg 2012-03-02 22:53:50

+0

@vipinagg,好點。我在兩個地方給它打電話:(1)在收到通知時應用程序委託(這是錯誤的,但事實證明,第二次出現的位置並不重要),以及(2)在「applicationDidEnterBackground」方法中,我調用了一個調度所有通知的函數,並且函數所做的第一件事是在安排任何新通知之前取消所有通知。但好點 - 猜你問是否只在應用程序中調用:didFinishLaunchingWithOptions:但不在「applicationWillEnterForeground:」中。 – thephatp 2012-03-03 02:09:28

+0

請按照我對此主題的回答。 [http://stackoverflow.com/a/42724415/1720559](http://stackoverflow.com/a/42724415/1720559) – 2017-03-10 17:34:51

回答

1

我相信本地和遠程通知是基於App ID(AppleID + BundleID)。因此,無論版本如何,您都將收到通知。我可以看到贊成和反對這個實施的論點。

您是否需要一些處理此功能的策略?

+0

是的,絕對需要一些策略來處理它。本質上,我需要以某種方式取消所有計劃的通知之前,用戶更新應用程序(B/C有一個新的應用程序ID)。另外,儘管我非常懷疑這是可能的,但如果在應用程序更新後我可以強制取消,那就足夠了(懷疑蘋果公司給出了這種級別的控制權)。 – thephatp 2012-03-02 21:46:07

相關問題