我正在构建一个应用程序,它通过ajax将文件上传到服务器。 问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax呼叫。用户可以在离线并关闭应用程序时安排文件上传。应用程序关闭时(不在后台)可以进行ajax调用吗? 当应用程序在后台时,我们可以使用后台获取,但是当应用程序关闭时,我从未遇到过做某事的问题。
答案 0 :(得分:5)
答案 1 :(得分:2)
是的,你可以在后台做事。您仅限于几种不同的执行背景模式。服务器通信是允许的模式之一(后台获取)。确保按照指南在Xcode中正确设置属性(即,当您进行数据传输时,不要说您是音频应用程序)。请在此处查看详细信息:
我找到了你的问题,因为它有与之相关的Cordova标签。如果您使用的是Cordova,可以在此处使用此插件来管理后台的内容:
https://github.com/katzer/cordova-plugin-background-mode
编辑:如果用户FORCE关闭/终止应用程序,那么您无能为力。如果他们只是将应用程序退出到主屏幕并使用其他应用程序,那么您可以在后台运行。
您可以执行的另一个选项是安排本地通知以上传文件。如果您的应用程序成功上传该文件,因为它已打开/有连接/在后台执行,那么您取消本地通知。
如果本地通知未被取消,则会提醒用户该文件未上传,当他们打开通知时,您的应用会从停止的位置开始。
答案 2 :(得分:1)
- (void)applicationWillTerminate:(UIApplication *)application {
if (application) {
__block UIBackgroundTaskIdentifier backgroundTask = UIBackgroundTaskInvalid;
backgroundTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
backgroundTask = UIBackgroundTaskInvalid;
}];
[self doSomething];
[application endBackgroundTask:backgroundTask];
backgroundTask = UIBackgroundTaskInvalid;
}
}
答案 3 :(得分:0)
我已经回答了类似的问题: https://stackoverflow.com/a/57245917/6157415
您可以实施通知,当用户收到通知时,您的代码的一部分可以执行。
尤其是静默推送通知可以做到这一点:
有时,您可能想使用静音推送通知进行更新 在后台应用内的内容。静默推送通知 被定义为没有警报,标志或声音的推送,并且 仅有键值数据。
发件人:https://docs.mobile.sailthru.com/docs/silent-push-notifications