如何在 iOS 中禁用/启用本地通知?

Posted

技术标签:

【中文标题】如何在 iOS 中禁用/启用本地通知?【英文标题】:How to disable/enable local notification in iOS? 【发布时间】:2014-03-12 12:24:04 【问题描述】:

在我的应用程序中,我保存了某些坐标并将它们设置为地理围栏,因此每次用户位置进入某个地理围栏时,我都会在 didEnterRegion 委托方法中放入一些代码,通知用户他/她进入了某个地理围栏。我正在使用 UILocalNotification 通知用户。

我担心的是,在我的应用程序“设置”视图中。我有一个用于启用/禁用通知的切换按钮。我怎么做?

谢谢!

【问题讨论】:

在 nsuserdefault 中存储布尔值,如果是,则安排本地通知,否则不 【参考方案1】:

UILocalNotification 的启用/禁用没有任何特定属性,因此我们无法轻松处理它。对于启用和禁用UILocalNotification(在您的情况下),

我只是把我的逻辑

if(toggleButtonEnable)

  // First remove all LocalNotifications with set it's BadgeNumber = 0 
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;

  // Then write code of UILocalNotification with it's fireDate

else

   // remove all LocalNotifications with set it's BadgeNumber = 0
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;

通过使用上述代码,每当if condition 变为true 时,首先删除/取消所有通知并设置badge = 0; 并创建新的UILocalNotification 和当if condition 变为 false 时,还删除/取消所有通知并设置 badge = 0;。所以你可以轻松处理(启用/禁用)UILocalNotification

【讨论】:

在我的情况下,我想关闭特定用户 ID 的 LocalNotification。我有很多用户列表。请帮助我..【参考方案2】:

无法启用/禁用本地通知。但是有一种方法可以做到这一点。

删除通知(禁用通知)

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"NotifyName" object:nil];

之后添加通知(启用通知)

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(abc:) name:@"NotifyName" object:nil];

【讨论】:

本地通知不是NSNotifications

以上是关于如何在 iOS 中禁用/启用本地通知?的主要内容,如果未能解决你的问题,请参考以下文章

切换启用/禁用本地通知(swift 4)

使用开关启用和禁用本地通知(swift 3)

如果在 iOS 设置中禁用通知访问时安排本地通知,则不会在 iOS 13 上触发本地通知

如何暂时禁用我的 iPhone 应用程序安排的所有本地通知?

在 iPhone 上确定用户是不是启用了本地通知

在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?