我正在开发一款应用,其功能为UILocalNotification
。因此,我想从应用中的交换机启用和禁用所有UILocalNotification
而不取消它们。用户只更改设备中的所有通知设置,我只想从我的应用程序处理。
答案 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
即可。
如果要启用通知,请将阵列设置为先前的值。
然后出现了如何保存通知的问题......
但是,实际上最简单的解决方案是在禁用时始终取消所有通知,并在启用时从头开始创建。