今天为了解决这个问题,试了好几种方法。下面为介绍下测试的情况:
第一种方法:通过定位方式CLLocationManager,具体方法网上有很多。用这种方法是可以,但手机顶部会有小蓝条,用户体验不好,放弃掉了。
第二种方法;后台保持实时开启音频,当电话打进来,可能会有问题,也没考虑。
第三种方法:在后台保持一个定时器,这种方式比较可行。代码如下:
@property (nonatomic, unsafe_unretained) UIBackgroundTaskIdentifier taskId; @property (nonatomic, strong) NSTimer *timer_2;
- (void)applicationDidEnterBackground:(UIApplication *)application { // 这个判断是为了防止进入后台之后时间还没过完进入前台又开启了新的任务导致APP被强制kill掉 if(self.taskId != UIBackgroundTaskInvalid){ return; } self.taskId =[application beginBackgroundTaskWithExpirationHandler:^(void) { //当申请的后台时间用完的时候调用这个block //此时我们需要结束后台任务, [self endTask]; }]; // 模拟一个长时间的任务 Task self.timer_2 =[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(longTimeTask:) userInfo:nil repeats:YES]; }
#pragma mark - 停止timer -(void)endTask { if (_timer_2 != nil||_timer_2.isValid) { [_timer_2 invalidate]; _timer = nil; //结束后台任务 [[UIApplication sharedApplication] endBackgroundTask:_taskId]; _taskId = UIBackgroundTaskInvalid; // NSLog(@"停止timer"); } } - (void) longTimeTask:(NSTimer *)timer{ // 系统留给的我们的时间 NSTimeInterval time =[[UIApplication sharedApplication] backgroundTimeRemaining]; NSLog(@"系统留给的我们的时间 = %.02f Seconds", time); }
如果项目中有用到环信,环信也有后台运行处理,以下代码需要去掉,不然第三种方法会失效。具体如下:
- (void)applicationDidEnterBackground:(UIApplication *)application { // [[EMClient sharedClient] applicationDidEnterBackground:application]; }
- (void)applicationWillEnterForeground:(UIApplication *)application { // [[EMClient sharedClient] applicationWillEnterForeground:application]; }
相关推荐
ios app 后台运行备份,ios的app运行在后台的代码实现。
关于iOS App后台运行的调研报告
解决ios的app内H5页面倒计时在锁屏后停止或延迟的解决方案
iOS 10 App Development Essentials: Learn to Develop iOS 10 Apps with Xcode 8 and Swift 3 Author: Neil Smyth Length: 816 pages Edition: 1 Language: English Publisher: CreateSpace Independent Publishing...
高仿抖音短视频APP源码 支持直播&带原生安卓和ios源码&后台PHP-带安装教程详情说明 做了一些修复修改 文件比较大 搭建有难度,具体没有细测。带安装教程的有需要的可以自己研究下载 AS 最新版 3.6.1 Xcode 最新 ...
---已处理电话事件和其他音乐app干扰,为了测试,内置音乐是有声的,需要你自己去找或手机简单录制无声音乐,以达到神不知鬼不觉的后台持续运行.
ios demo,NSNotificationCenter,app进入后台时的调用和就、进入前台时的调用。
Android/IOS原生APP完整USDT源码带完整后台 对接火数据,行情K线交易对都是火数据,带原生安卓APP和苹果ios端源码 项目所需软件 (推荐使用宝塔控制面板安装) Linux服务器系统 Nginx、php、mysql、redis、supervisor ...
Learn ios 7 App Development
iOS 11 App Development Essentials Learn to Develop iOS 11 Apps with Xcode 9 and Swift 4
iOS 11 App Development Essentials Learn to Develop iOS 11 Apps with Xcode 9 and Swift 4 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
iOS程序进入后台后十分钟之内就会被系统kill掉,这个demo是程序进入后台后会一直运行
ios里在后台或者锁屏时js会停止运行,倒计时之类的场景会停止执行,这个就是解决这样的问题
ios APP電子書
ios判断App是否安装: 自已写的A,B两个程序。用该方法可以使A程序判断B程序是否在ios设备中有没有安装。 不能判断任意程序是否安装。
一般APP在按下Home键被挂起后,这时APP的 backgroundTimeRemaining 也就是后台运行时间大约只有3分钟,如果在退出APP后,过十几二十二分钟或者更长时间再回到APP,APP就会回到刚打开时的状态,也就是首页;...
ios app调用第三方app,可以调用萤石云app和中维世纪app。
iOSapp处于后台-被杀死的状态仍可进行语言播报.docx
IOS 后台的可持续定位,遵循苹果的机制,后台会10分钟唤醒一次,给10S的执行时间,然后关闭。这样一直循环。
IOS APP应用开发 微博 Xcode 详细代码