如何在ios中以编程方式安排事件?

我的任务是编写一个应用程序,允许用户安排将来发送的电子邮件。

用户从日期选择器中选择日期时间,组成消息和收件人,然后安排事件。 发生日期/时间时,将发送消息。

有人可以指导我如何进行调度,让我们说一条短信。 我知道如何发送短信。 只是不确定事情的调度方面。

任何指针都将非常感激。

第一个响应在技术上允许您建立一个每2.5秒发射一次的计时器,但原始海报要求在特定时间点火的解决方案。 为此,您需要使用以下NSTimer方法:

- (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats 

第一个参数是NSDate指示计时器何时应该触发。

原始海报未指定,但如果这是一个iOS应用程序,那么了解计划在远程日期/时间触发的计时器如果您的应用程序不是前台应用程序将无法触发,这一点非常重要。 实际上,当您的应用在iOS上的后台时,无法安排此类事件,因此您必须考虑到这一点。

这是一段代码,它设置一个使用计时器来调用self的imageSavedLabelOff:选择器,其自身(计时器)作为方法的对象参数。 计时器安排在2.5秒内完成呼叫。

NSTimer *quickie = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(imageSavedLabelOff:) userInfo:nil repeats:NO];

您可能已经找到了答案,但对于像我这样的未来访问者,我想建议一个答案 – 即EventKit

https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html

您可以随时安排/获取活动并相应地完成您的工作。 希望这有助于某人。

您应该能够使用NSRunLoop实现此目的。 查看“ 线程编程指南” 。

除了使用NSTimer之外,您应该知道发送电子邮件可能会因多种原因(无网络和其他网络)而失败。 然后你需要重新安排请求,可能在3次重试后放弃并通知用户。

您可以使用 –

 [self performSelector:@selector(myFunc:) withObject:nil afterDelay:5.0];