首先,我知道只支持voip,音频和位置应用程序在后台运行,并且它们将在播放音频或使用位置服务等时运行.
我想知道的是,如果有办法让我的应用程序在后台运行完全正常运行,那么对电池寿命的影响无关紧要.
这样,我的应用程序的用户可以从设置中进行选择,以便随时随地保持应用程序,并且只需要他想要的时间.例如,如果他正在等待需要应用程序运行的内容,则在收到消息后,他可以关闭保持活动功能.
我不知道这是否可行,但我读过一些帖子,但不幸的是他们没有说如何=(
更新:在本教程中,我发现Acrobits在Apple Store上有两个应用程序"可以强制应用程序保持活动并在后台唤醒".那么有办法做到这一点吗?
我正在尝试将一系列文件从iPhone上传到服务器,目的是即使应用程序处于后台或暂停,也会上传这些文件.
我正在使用由它及其系列API 提供的后台传输NSURLSession.
奇怪的是它在两周前完全正常工作.如:
最近几天,我一直在网络模块之外进行一些重构.几天前我再次尝试上传时,只要按下"主页"按钮,上面的步骤(3).当我再次进入应用程序时,文件上传将停止.上传将恢复.
这就好像后台上传甚至不起作用(对于一个文件,更不用说多个文件).
我已多次运行代码,发现它的工作量约为1/50.但其他49次没有.我还检查了以前使用的代码版本(服务器+ iOS),它不再有效 - 或者说,工作很少变化(1/50)
多次完成背景传输和URL会话生命周期的规则,以确保我遵守Apple建议的指导方针,我正在绞尽脑汁想知道什么破坏了,这让人难以理解这是多么不合逻辑 - 我怀疑它是代码实现以外的东西.
所以任何帮助都表示赞赏......
1)在init我的网络类(单例)的方法中,我初始化NSURLSessionConfiguration和NSURLSession:
urlSessionConfigUpload = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:kBACKGROUND_SESSION_CONFIG_ID];
urlSessionConfigUpload.sessionSendsLaunchEvents = YES;
urlSessionConfigUpload.discretionary = YES;
urlSessionConfigUpload.HTTPMaximumConnectionsPerHost = 8;
urlSessionConfigUpload.networkServiceType = NSURLNetworkServiceTypeBackground;
urlSessionConfigUpload.HTTPShouldUsePipelining = NO;
urlSessionConfigUpload.allowsCellularAccess = NO;
urlSession = [NSURLSession sessionWithConfiguration:urlSessionConfigUpload delegate:self delegateQueue:nil];
Run Code Online (Sandbox Code Playgroud)
2)有一种方便的方法叫做实际上传.每个会话只有1个上传任务:
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"PUT"];
[urlRequest addValue:@"keep-alive" forHTTPHeaderField:@"Connection"];
[urlRequest addValue:contentType forHTTPHeaderField:@"Content-Type"];
// NB: for upload …Run Code Online (Sandbox Code Playgroud) 因此,iOS 7支持更广泛的后台模式,是否有可能最终在iOS上拥有相当于Android服务?
我所追求的实际上是在后台运行应用程序A并且有一个或多个应用程序B和C与该应用程序通信(没有显示应用程序A的GUI).
请注意,使用连接和推送通知可能不是一种选择,尽管这是建议的方式.有任何想法吗?
ios ×2
objective-c ×2
android ×1
background ×1
ios4 ×1
ios7 ×1
iphone ×1
keep-alive ×1
service ×1