`
wenxin2009
  • 浏览: 321404 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解决ios13 app后台挂起时被kill掉

    博客分类:
  • ios
 
阅读更多

今天为了解决这个问题,试了好几种方法。下面为介绍下测试的情况:

第一种方法:通过定位方式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内H5页面倒计时在锁屏后停止或延迟的解决方案

    3. **Push Notification**:如果时间精度要求很高,可以考虑使用苹果的Push Notification服务,当倒计时到达某个关键点时,服务器发送通知给客户端,即使App在后台或被关闭,也能提醒用户。 4. **Background Fetch*...

    解决ios下后台运行与锁屏时倒计时停止问题

    标题"解决ios下后台运行与锁屏时倒计时停止问题"正是针对这一常见挑战,而描述中的内容则提供了解决方案的方向。 当iOS应用被切换到后台,Apple的沙盒机制会自动暂停大部分非必要进程,包括Web视图(如WKWebView)...

    iOS app 调用音乐永久后台运行

    本文将深入探讨如何在iOS App中实现音乐的永久后台运行,同时处理电话事件和其他音乐App的干扰。 首先,我们需要了解iOS的后台模式。iOS支持几种特定的后台模式,包括音频播放、位置更新和后台刷新等。对于音乐播放...

    关于iOS App后台运行的调研报告.pdf

    ### 关于iOS App后台运行的调研报告 #### 一、引言 随着移动互联网的发展,用户对于应用程序的需求日益增加,特别是在后台运行方面。为了更好地理解iOS应用后台运行机制及其应用场景,本报告对iOS官方文档中关于...

    ios app 后台运行备份

    对于"ios app 后台运行备份",我们可能需要结合上述模式之一来实现。通常,数据备份可能涉及到大量数据,所以后台传输服务(Background Transfer Service)可能是最佳选择。通过创建一个后台会话配置,并使用`...

    iOS 10 App Development Essentials

    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-带安装教程

    高仿抖音短视频APP源码 支持直播&带原生安卓和ios源码&后台PHP-带安装教程详情说明 做了一些修复修改 文件比较大 搭建有难度,具体没有细测。带安装教程的有需要的可以自己研究下载 AS 最新版 3.6.1 Xcode 最新 ...

    Android/IOS原生APP完整USDT源码带完整后台

    Android/IOS原生APP完整USDT源码带完整后台 对接火数据,行情K线交易对都是火数据,带原生安卓APP和苹果ios端源码 项目所需软件 (推荐使用宝塔控制面板安装) Linux服务器系统 Nginx、php、mysql、redis、supervisor ...

    IOS 系统的后台持续定位

    在用户将应用切换到后台时,iOS会采取一系列措施来节省电池,包括暂停大部分非必需进程。然而,对于某些特定类型的应用,如地图和健身应用,用户期望它们即使在后台也能持续更新位置信息。 这就是“后台持续定位”...

    ios 程序在后台运行的demo

    一般情况下,应用进入后台后会被立即挂起,但特定类型的App(如音乐播放器、导航应用)可以获得额外的后台执行时间或权限。 这个"程序在后台运行Demo"可能利用了以下技术来延长应用在后台的活跃时间: 1. **后台...

    解决ios下h5锁屏时倒计时停止问题

    但一旦进入后台,为了节省系统资源和电池寿命,大部分网络活动和JavaScript执行都会被挂起。这对于原生应用,可以通过使用Background Modes来实现某些后台功能,但对于基于Web的H5应用,这种机制就显得不够用了。 ...

    IOS 稳定无限后台运行

    在iOS系统中,后台运行是一项复杂的技术挑战,因为苹果为了优化电池寿命和用户体验,对应用程序在后台的行为进行了严格的限制。然而,“IOS 稳定无限后台运行”是一种技术策略,旨在让应用程序即使在用户切换到其他...

    ios-App-App.zip

    标题中的"ios-App-App.zip"可能是一个包含iOS应用开发相关资源的压缩包,可能是源代码、文档或者示例项目。"App-App"可能指的是两个或多个iOS应用间的通信。在iOS中,这种通信通常涉及以下几种方式: 1. **URL ...

    解决了ios系统因锁屏导致倒计时不准的问题

    在iOS中,应用有多种状态:active(活跃)、inactive(非活跃)、background(后台)和suspended(挂起)。当用户锁屏时,应用通常会进入background或suspended状态,此时,为了节省电池和资源,系统可能会限制应用...

    苹果iOS app开发之更新升级app的办法.zip

    - `【ios】APP版本更新的解决方法_游溟丶_新浪博客.url`:个人博客分享的iOS应用更新策略。 总之,开发iOS app时,开发者需要掌握正确的方法来检测和提示用户更新,同时遵循苹果的指导原则,确保提供良好的用户...

    iOS App Signer Mac

    7. **Cydia Impactor**:类似工具如Cydia Impactor也可以实现类似功能,但iOS App Signer可能是针对Mac用户的独立解决方案。 在提供的文件列表“ios-app-signer-master”中,我们可以推测这是一个开源项目,可能...

    iOS 11 App Development Essentials Learn to Develop iOS 11 Apps with Xcode 9 epub

    iOS 11 App Development Essentials Learn to Develop iOS 11 Apps with Xcode 9 and Swift 4 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    高仿iOS11 App Store列表效果

    在iOS应用开发中,创建与iOS 11 App Store类似的列表效果是一项常见的需求,它可以提升用户的体验感,使应用更具吸引力。本项目标题为“高仿iOS11 App Store列表效果”,其主要目的是通过编程技术实现类似App Store...

    iOS如何保持程序在后台长时间运行

    在iOS平台上,应用程序在后台运行的能力受到严格的限制,这是为了优化电池寿命和系统性能。iOS采用了墓碑式后台管理模式,大部分应用在用户按下Home键后只能在后台运行有限的时间。通常,应用程序在转入后台后有180...

    IOS应用进入后台继续更新数据

    在iOS平台上,应用程序通常在进入后台模式时会受到严格的资源限制,这主要是为了优化设备性能和延长电池寿命。然而,有些应用需要在后台持续运行,例如音乐播放、位置跟踪或实时消息推送。针对"iOS应用进入后台继续...

Global site tag (gtag.js) - Google Analytics