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

时间:2011-10-10 16:27:46

标签: iphone objective-c ios

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

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

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

任何指针都将非常感激。

6 个答案:

答案 0 :(得分:7)

第一个响应在技术上允许您建立一个每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上的后台时,无法安排此类事件发生,因此您必须考虑到这一点。

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

您应该能够使用NSRunLoop实现此目的。查看Threading Programming Guide

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您可以使用 -

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