首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序关闭时的iOS任务

应用程序关闭时的iOS任务
EN

Stack Overflow用户
提问于 2016-02-07 21:05:44
回答 4查看 5.8K关注 0票数 9

我正在建立一个通过ajax上传文件到服务器的应用程序。问题是,用户有时很可能无法连接到internet,而客户端希望在用户恢复连接时安排ajax调用。这可能是用户在离线时安排文件上传并关闭应用程序。是否可以在应用程序关闭时(不在后台)执行ajax调用?当app在后台时,我们可以使用background-fetch,但我从来没有遇到过在app关闭时做一些事情的问题。

EN

回答 4

Stack Overflow用户

发布于 2016-02-07 21:14:01

简短的回答是不,你的应用程序在被终止后不能运行代码。

您可以在AppDelegateapplicationWillTerminate中运行代码,但该方法主要用于保存用户数据和其他类似任务。

另请参阅this answer

票数 6
EN

Stack Overflow用户

发布于 2016-02-08 20:40:30

是的,你可以在后台做一些事情。您只能使用几种不同的后台执行模式。服务器通信是允许的模式之一(后台获取)。确保在Xcode中按照指导原则正确设置了属性(即在进行数据传输时不要说自己是一个音频应用程序)。详情请看这里:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

我找到了你的问题,因为它有关联的Cordova标签。如果你使用的是Cordova,你可以在这里使用这个插件来管理后台的东西:

https://github.com/katzer/cordova-plugin-background-mode

编辑:如果用户强制关闭/终止应用程序,那么您将无能为力。如果他们只是退出应用程序到主屏幕,并使用其他应用程序,那么您可以在后台运行。

您可以执行的另一个选项是计划本地通知以上载文件。如果你的app成功上传了文件,因为它是打开的/有连接的/在后台完成的,那么你就取消了本地通知。

如果本地通知没有被取消,它会提醒用户文件没有被上传,当他们打开通知时,你的应用程序将从它停止的地方开始。

票数 3
EN

Stack Overflow用户

发布于 2016-09-23 21:37:09

代码语言:javascript
复制
- (void)applicationWillTerminate:(UIApplication *)application {
    if (application) {
        __block UIBackgroundTaskIdentifier backgroundTask  = UIBackgroundTaskInvalid;
        backgroundTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
            backgroundTask = UIBackgroundTaskInvalid;
        }];
        [self doSomething];
        [application endBackgroundTask:backgroundTask];
        backgroundTask = UIBackgroundTaskInvalid;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35253840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档