2012-03-02 24 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

相关问题