如何在ios4中执行网络背景

时间:2010-12-15 06:33:02

标签: iphone objective-c cocoa cocoa-touch iphone-sdk-3.0

我们的应用不使用默认电子邮件应用程序进行电子邮件发送,而是使用SMTP实施。现在当应用程序处于前台时 - 电子邮件将使用SMTP连接发送。但是说如果我点击发送然后切换到另一个应用程序 - 电子邮件没有被发送。它仅在我们恢复到应用程序时发送。通常我们希望在应用程序处于背景状态时发送电子邮件。欢迎任何提示。聊天应用程序如何轮询新消息 - 如果我们得到任何提示 - 我们也可以完成我们的任务。

2 个答案:

答案 0 :(得分:1)

这是一个很好的问题。

根据Apple有关Multi Tasking的文档:

  

除了上述键,iOS   提供了另外两种工作方式   背景:

     

任务完成 - 应用程序可以询问   系统有额外的时间来完成   给定的任务。
本地   通知 - 应用程序可以   安排本地通知   在预定的时间交付。

如果您的任务不是长期且连续的任务,例如VOIP服务,GPS服务或音频服务,您可以将其声明为“有限长度任务”,并且您可以在后台完成此任务。请记住,MU仅适用于iOS 4.0,仅适用于3GS和4设备。您还应该为不支持MU的其他设备管理这些任务。

总是根据官方文档,你可以这样做:

  

您可以使用任务完成来确保   这很重要但可能   长期运营不会结束   当用户离开时突然   应用。 例如,你可以   使用此技术来保存用户数据   到磁盘或完成下载   来自网络服务器的重要文件。   有几种设计模式   你可以用来启动这样的任务:

     
      
  • 包装任何长期运行的关键任务   同   -[UIApplication beginBackgroundTaskWithExpirationHandler:]   和-[UIApplication endBackgroundTask:]电话。这个   在情况下保护这些任务   你的申请突然来了   搬到了后台。
  •   
  • 等你的   申请代表   applicationDidEnterBackground:方法   被召唤并开始一个或多个   然后是任务。
  •   

答案 1 :(得分:-3)

Apple对第三方应用程序的要求之一是您无法在后台运行您的应用程序。我认为,您可以通过在您的applicationShouldTerminate方法中返回NO来完成您的任务,但您的应用程序将不会被Apple批准在AppStore中发布。