ios 程序在后台运行

iOS 不用VOIP也可以实现微信来电邀请推送持续响铃震动及及时来电取消 写这个功能花费我了很长一段时间,简直头秃。不知道有没有相同感受的。一开始原以为使用推送服务扩展轻轻松松就可以实现,然后一顿操作,发现了很多问题。重新查看了官方文档,发现以目前的机制根本无法实现这个功能。后来又一顿资料搜索发现了VOIP这个东西,刚刚好正是我所需要的,但是问题来了,中国地区在iOS13后,已经禁用了该功能,一旦使用这个功能就面临着,上架被拒的风险,当然如果你是在国外上架的,当我没说。当撸掉头上一戳毛之后,终于看到了希望的曙光.请继续往下翻。 阅读详情

使用ios的设备,点击home键之后,程序就会进入后台,变成挂起状态,这个时候程序中所有代码不再执行,因此是不浪费电量和内存的。

ios目前提供600秒进行执行后台代码,但是这远远不够,有些操作10分钟肯定执行不完。以下来自网络的解释:

我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这是怎么做到的呢?一般来说,要实现iOS长时间后台运行,需要声明VOIP、Audio或GPS。
 
Audiosession
 
实现方法很简单,就是在后台一直播放一个无声的音乐文件,这样就相当于声明了Audio,就可以轻松突破600秒的限制了。
 
通过播放“静默”音让程序在后台执行的做法(即在audiounit回调函数中使用kAudioUnitRenderAction_OutputIsSilence标志位),虽然确实可以实现后台执行,但实践中限制很多。最大的问题就在于程序的audiosession不能被打断。当程序执行在后台时,只要另一个程序使用kAudioSessionCategory_RecordAndPlay(比如Skype)或者kAudioSessionCategory_SoloAmbientSound(印象中使用这个session的不多),那么本程序就会被立即打断。
 
打断本身不是问题,但当播放程序被打断时,唯一能够获得的只有处理audiosessioninterruption的很短一段时间。我的实验测试大概是3到5秒,但因为程序随后立即暂停,无法挂调试器,所以很难准确估计,然后程序就会被立即转入休眠状态。这点时间和applicationDidEnterBackground回调函数所用的时间大体相当,但是因为这个打断中间还伴随一个播音的回调动作,程序结构不是很好组织,在很多情况下是不够做现场保存工作的。
 
不推荐播放“静默”音的另一个问题它的恢复播放需要的场景非常麻烦。比如当一个iOS程序在后台被VOIP唤醒时,它是不能直接获得audiounit重新开始播音的。如果此时调用AudioOutputUnitStart(),会返回一个错误码,哪怕前台没有任何一个程序在运行也是如此。此时你不可能让程序重新进入稳定运行状态。有些没经验的程序员喜欢利用audiosessioninterruptionhandler做所谓的自动播放恢复,但他们其实都没有注意到audiosessioninterruption的状态恢复回调并不会保证被调用。目前实测能自动恢复调用的,大概也就只有内建的电话拨号程序,以及一些非常特殊的场景(比如你用一个MP3播放器打断audiosession,然后杀掉MP3播放器进程,然后把被打断的程序重新置回前台)。这样经常导致的结果,就是你开心地发现程序没问题,然后在放进生产环境中发现各种时不时的崩溃或启动失败。
 
VOIPsocket
 
VOIPSocket可以在后台运行。当程序进入后台时,事实上整个程序被暂停运行,但VOIPsocket因为受系统控制而不在此列。我的观察是,每次有新的数据来临时,程序会被唤醒并执行大约几秒钟,然后再次进入休眠。Stackoverflow上的说法是10秒钟,但我不确定,可能是我的试验不够精确。

iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能) 文章目录引言I 开发步骤1.1、创建NotificationServiceExtension1.2、 创建 AudioTool1.3、配置项目1.4、注册推送II iOS15适配本地通知功能see also 引言 在杀死APP的情况下唤醒APP,并执行代码的实现方式有Voip 推送和iOS 10新增的Service Extension。 本文采用Service Extension并结合本地通知实现app处于后台/被杀死的状态仍可进行语言播报。 资源下载源码:https://download.csdn.ne 阅读详情

相关推荐

Social-Auto-Upload实战:如何用Python+Playwright实现抖音/B站/小红书一键三连发?

本文详细介绍了如何使用Python和Playwright框架构建Social-Auto-Upload自动化上传工具,实现抖音、B站、小红书等平台的一键多发布。通过模拟真实用户操作和Cookie管理技术,该工具能有效解决内容创作者跨平台发布的重复劳动问题,提升工作效率。

day7的博客 1399

实现iOS长时间后台的两种方法:Audiosession和VOIP

我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这是怎么做到的呢?一般来说,要实现iOS长时间后台运行,需要声明VOIP、Audio或GPS。 Audiosession 实现方法很简单,就是在后台一直播放一个无声的音乐文件,这样就...

weixin_30933531的博客 319

信息收集-服务器信息

服务器上面可以运行大量的系统服务和第三方应用服务,如果操作系统或者第三方软件没有及时升级打补丁,攻击者就有可能直接通过服务器上运行的服务进行攻击。

weixin_49349476的博客 1446

iOS:计时器(5秒执行一次)

iOS 计时器(5秒执行一次) 每5秒执行一次,切记离开页面时取下进程。 /** 获取一个全局的线程来运行计时器*/ dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); /** 创建一个计时器*/ _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue2); /**

韩博主 2174

16、SQL Server索引的创建与评估

本文详细介绍了SQL Server中索引的创建与评估方法,涵盖索引的基本概念、类型(聚集与非聚集)、唯一性设置以及如何判断索引的好坏。通过实际操作步骤、维护策略和常见问题解决方案,帮助数据库开发者合理设计索引,提升查询性能并控制维护开销。同时提供了索引创建与维护的决策流程图,便于理解和应用。

water的专栏 126

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数本文禁止转载!项目简介:YOLOv5检测器:DeepSort追踪器:运行demo:训练自己的模型:调用接口:创建检测器:调用检测接口: 本文禁止转载! 项目简介: 使用YOLOv5+Deepsort实现车辆行人追踪和计数,代码封装成一个Detector类,更容易嵌入到自己的项目中。 代码地址(欢迎star): https://github.com/Sharpiless/Yolov5-deepsort-inference 最终效果:

梁瑛平的博客 5万+

iOS音频播放(二):AudioSession

转载自:http://www.cocoachina.com/industry/20140717/9162.html

anxiang1989的专栏 839

深度探索:VS2022 牵手 DeepSeek,开启开发新征程

通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3522

iOS开发:后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动。 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。 活动-app处于“使用中”的状态。 后台-app不再屏幕上显示,但它仍然执行代码。 挂起-app仍然驻留内存但不再执行代码。 按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变

jianjianyuer的专栏 1871

团体程序设计天梯赛竞赛题--登顶题【L3-039 攀岩】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 653

【PowerBI专栏】PowerBI导入MYSQL数据库

本文介绍了在PowerBI中连接MySQL数据库的方法。首先需要下载并安装MySQL官方.NET连接驱动(推荐8.4.0版本),安装完成后重启PowerBI。连接时需填写服务器IP和数据库名称等必填参数。文章详细说明了连接配置步骤,包括账户设置、数据表选择以及可能遇到的数据格式转换问题处理。最后指导用户完成数据清洗后进入PowerPivot进行后续计算。特别提醒最新9.4版本可能存在兼容性问题,建议使用稳定的8.4版本连接器。

技术与管理的平衡木- 689

iOS4支持后台运行,程序的事件响应

程序事件: 启动时事件 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions BecomeActive: 切换后台(按home键) - (void)applicationWillResignActive:(UIAppl

sngal3的专栏 2487

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 777

iOS7程序后台运行

介绍 这次iOS7对程序后台运行进行了加强,但是仅仅是加强而已,要想像Android程序那样自由当然就别想了,苹果这么做主要还是出于电池使用时间考虑,但是这次的加强对大部分程序基本够用。 在介绍之前, 我们先回顾一下在iOS7之前的后台运行相关的知识。在iOS7之前(iOS4之后)主要有三类的应用程序能够后台运行: 音频播放后台定位服务IP电话 除了这三种应用,其他程序只能

yongyinmg的专栏 1273

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

iOS后台运行程序, 播放音乐,运行socket等

iOS后台保持程序不休眠,一般十分钟左右之内,只需要实现以下方法即可,可实现后台播放音乐,处理socket消息等,以下代码即可。

zhaofahseng的博客 493

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

iOS程序进入后台后仍运行

大咖揭秘Java人都栽在了哪?点击免费领取《大厂面试清单》,攻克面试难关~>>> 最近在做一个基于第三方库的iOS音乐播放器应用(可看我前面的博客 《跨平台音频项目》)当然作为计时的功能肯定不会少,以及后台播放。开发期间也是遇到各种各样的小问题,本文所讲为其中之一:iOS程序进入后台后十分钟之内就会被系统kill掉,怎么解决呢?我想要程序进入后台后仍然运行计时功能以及播放功能,否则就无法达到后台播放的目的,之后在网上查阅了相关资料最后终于找到答案,其精髓就是:利用苹果给出的三种类型的程

ruilianpeng的专栏 705

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

iOS开发之使程序在后台运行

方法一(此方法不太可靠): 开启程序后台运行: [application beginBackgroundTaskWithExpirationHandler:^{ //后台运行过期后会调用此block内代码 }]; 上面在后台开启任务让程序在后台持续保持运行状态,但能保持运行的时间是不确定。比如内存不足的时候系统可能停止其在后台运行。 方法二: 欺骗系统,在Info.plist中声明自...

weixin_33743248的博客 151

iOS开发---后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态:停止运行-应用程序已经终止,或者还未启动。不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。活动-app处于“使用中”的状态。后台-app不再屏幕上显示,但它仍然执行代码。挂起-app仍然驻留内存但不再执行代码。按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起。在内存吃紧的时候,i

QiLong_Shi的博客 1459

ios 程序后台运行

欢迎使用Markdown编辑器写博客在以前,当app被按home键退出后,app仅有最多5秒钟的时候做一些保存或清理资源的工作。但是应用可以调用UIApplication的beginBackgroundTaskWithExpirationHandler方法,让app最多有10分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。@property (assign, nonat

ma_wenbo的博客 412

IOS后台程序运行

IOS7对程序后台运行进行了加强,在IOS7之前及IOS4之后主要有三类的应用程序能够后台运行: 1、音频播放 2、后台定位服务 3、IP电话 除了这三种应用,其他程序只能是在进入后台之前向系统请求一个额外的运行时间(最长为10分钟),并在该时间内来进行后台运行操作,如保存用户信息,上传或者下载数据,进行视频编码等操作。 - (void)applicationDidEnterBack

349
上一篇: Android 数据存储
下一篇: Android http请求代码
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值