Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 架构问题:重复事件的设计_Ios_Xcode_Architecture_Recurring - Fatal编程技术网

Ios 架构问题:重复事件的设计

Ios 架构问题:重复事件的设计,ios,xcode,architecture,recurring,Ios,Xcode,Architecture,Recurring,我需要在我们的应用程序中有一个逻辑,它允许定义循环事件(例如,每个星期二,每个月的第一天)从而导致应用程序中的特定操作 我认为UILocalNotification是一个好主意,但是使用这个类,我也会向用户发送一个通知,我只想在应用程序中处理事件(如果应用程序不在线,那么可能是下次应用程序启动时) 另一个想法是建立一个活动列表,并在每次应用程序启动时检查活动是否到期——但这似乎很过时——希望有更好的活动 非常感谢您的任何建议如果您确实想在您的情况下使用UILocalNotification,它将

我需要在我们的应用程序中有一个逻辑,它允许定义循环事件(例如,每个星期二,每个月的第一天)从而导致应用程序中的特定操作

我认为UILocalNotification是一个好主意,但是使用这个类,我也会向用户发送一个通知,我只想在应用程序中处理事件(如果应用程序不在线,那么可能是下次应用程序启动时)

另一个想法是建立一个活动列表,并在每次应用程序启动时检查活动是否到期——但这似乎很过时——希望有更好的活动


非常感谢您的任何建议

如果您确实想在您的情况下使用
UILocalNotification
,它将完全满足您描述的需求

正如你所说,事件应该只在应用程序处于活动状态时触发(在前台),你必须添加一些自定义逻辑来实现这一点,但这不是一项非常困难的任务,你在这里有多种选择

我建议您使用
AppDelegate
的应用生命周期方法,在适当的时候安排和删除通知

uiapplicationelegate
协议包含两种与您的案例相关的方法(实际上更多,但这两种方法将为您完成工作…)。首先,我们有
应用程序willenterbackground:
,在这里您应该删除所有当前计划的通知。在方法
ApplicationIDBecomeActive:
中,您可以重新安排通知,因为每次应用程序再次出现在前台时都会调用此通知


如果您还有其他问题,请告诉我:)

非常感谢您的回答。我是否理解正确,这意味着,每当应用程序激活时,我都会重新安排所有现有通知(将有大约20到50个不同的计划被输入一次),并在应用程序不再激活时删除它们?(我非常感谢你的回答,我希望有一个更简单的解决方案),理想情况下,您可以将(重新)安排通知的逻辑封装到专用类中(例如,
NotificationManager
)。这样,只需实现一次逻辑,然后在
AppDelegate
中重用该类的实例。在
应用程序willenterbackground:
应用程序IDBecomeActive:
中,这应该只有一个方法调用,类似于
[notificationManager scheduleNotifications]
[notificationManager removeNotifications]
NotificationManager
是一个类,它总是知道要安排多少通知,以及何时安排通知,您的
AppDelegate
只调用其方法和一个附加项,因为您说过要安排20到50个通知,您可能希望在后台线程中使用
performSelector:withObject:
,这可能是这样的:
[notificationManager performSelector:@selector(scheduleNotifications)withObject:nil]
嗨,是的,我收到了,再次感谢,我会尝试一下并让您知道。祝您今天过得愉快