如何删除本地通知而不取消它们?

时间:2013-12-12 09:48:59

标签: ios iphone objective-c uilocalnotification

我正在开发一款应用,其功能为UILocalNotification。因此,我想从应用中的交换机启用和禁用所有UILocalNotification而不取消它们。用户只更改设备中的所有通知设置,我只想从我的应用程序处理。

5 个答案:

答案 0 :(得分:1)

声明一个布尔全局值(或用户默认值中的值)并包装在if语句中执行UILocal Notification的所有代码,例如:

if (showNotification) // <- this is your bool variable
{
    // Your code to handle notification
}

并在您的应用程序中:didFinishLaunchingWithOptions如果您要取消注册通知添加:

if (!showNotification)
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}
else
{
    //register notification
}

通过此按钮将所需按钮添加到您的应用和toogle声明值。 此外,如果您使用toogle按钮禁用通知,则必须取消所有通知,并在用户启用时将其注册回来。

希望得到这个帮助。

答案 1 :(得分:1)

我担心你不能这样做。您必须在禁用所有本地通知时取消它们,并忽略所有将来的通知。

当他再次打开通知时,只需重新创建所有本地通知。

否则,如果您已经注册了通知并且用户禁用了它们 - 它们将会被显示 - 没有其他方法可以禁用它们而不是取消全部。

如果您因应用逻辑的某些原因无法轻易地重新注册它们,那么只有解决方案才能保留这些事件的内部列表,并在UILocalNotifications之上管理它,以防您需要重新创建它们。

答案 2 :(得分:0)

您没有注册UILocalNotifications。您只需安排它们,然后在某个日期开火。如果你想停止触发它们,只需用你的条件包围代码。像这样:

if(userHasRegisteredForNotifications)
    //Schedule a notification here

除非您致电[[UIApplication sharedApplication] cancelAllLocalNotifications],否则他们仍会向用户展示。

答案 3 :(得分:0)

正如Grzegorz说你不能这样做,如果你的本地通知在应用程序处于前台时到达,所有其他建议都可以。
您可以使用enalble / disable事件创建应用程序内部通知表,并创建所需的行为。但是,如果您安排一个并且应用程序已关闭,则无论如何都将触发该应用程序,与通知信息无关 一种解决方案可能是在应用程序转到后台时删除所有通知,并仅重新安排与启用属性匹配的通知。这意味着您需要以某种方式序列化通知对象和/或选项。

答案 4 :(得分:0)

-[UIApplication scheduledLocalNotifications]readwrite属性。

如果要禁用通知,只需保存数组并将属性设置为nil即可。 如果要启用通知,请将阵列设置为先前的值。

然后出现了如何保存通知的问题......

但是,实际上最简单的解决方案是在禁用时始终取消所有通知,并在启用时从头开始创建。