gpt4 book ai didi

ios - 检测用户点击本地通知

转载 作者:可可西里 更新时间:2023-11-01 03:29:02 26 4
gpt4 key购买 nike

我会定期显示这样的本地通知。

UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Test test"];
[notification setUserInfo:@{@"test": @"test"}];
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];

我需要检测回那个通知,我打算写在这里。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

无论用户点击通知还是在前台自动调用,它总是调用该函数。

所以,我分开使用它。

if (application.applicationState == UIApplicationStateActive)

当我显示通知中心时,它变为 InActive。但是,它仍然调用 didReceiveLocalNotification。我无法区分用户是从通知中心点击通知还是因为我定期发布通知。

我如何真正知道我点击了 didReceiveLocalNotification 中的通知(来自 InActive 状态或后台状态)?

最佳答案

假设我正确理解了您的问题,我偶然发现了同样的障碍并且找不到 super 干净的解决方案。

所以出现下面方法的情况

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

被调用并且 applicationState 等于 UIApplicationStateInactive 在两种情况下发生:

  1. 应用程序在前台,通知刚刚被触发
  2. 通知已在一段时间前触发,通知中心被拉下,用户点击了通知

区分这两种情况的一种方法是检查通知的 fireDate:

notification.fireDate.timeIntervalSinceNow < 0.5

如果这个表达式为真,很可能第一种情况发生了。如果表达式为假,则很可能发生了第二种情况。

此解决方案取决于系统是否及时传送通知和/或用户没有足够快地在通知触发后 500 毫秒内点击通知中心的通知。我不确定触发延迟发生的可能性有多大。我想如果设备处于某种处理负载下,这是可能的。

我希望有一个更清洁的解决方案,希望有人能分享它。

关于ios - 检测用户点击本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com