当前位置:首页 > 每日看点 > 正文内容

是如何做到长时间在iOS后台运行的?

卡卷网1年前 (2025-01-06)每日看点198

iOS开发者

2023年12月了,这个后台循环播放无声音频保活的策略还是没有移除掉。

用了11分钟,睡一觉消耗我54%的电。iPhone15Pro。

只能卸载了。

<>2023年12月18更新

恰好这两天要搞后台下载,再加上这个事,我特地查苹果文档找了相关资料来确定我的经验带给我的认知没有出错。

目前后台运行的方式

<>1,配置后台下载

//配置后台下载session的config NSLSessionConfigation*config=[NSLSessionConfigationackgroundSessionConfigationWithIdentifier:@"sessionId"]; //下载完如果app被了调用launch config.sessionSendsLaunchEvents=YES; //后台下载的优先级等托管给。传输大数据要设置yes以保证稳定性 config.discretionary=YES;

实际上这种是将下载托管给,下载动作不在app进程内,如果app被挂起、死(非用户主动上滑任务卡片)、崩溃也不会影响,下载完成之后会主动唤醒app。

<>但是这个场景太过单一,只能用于下载,无法在里面加上业务逻辑。目前我遇到的用这种方式后台运行的只有王者荣耀、迅雷下载。

<>2,remoteNotifycatio和nActivityKit,即远程推送和灵动岛。

这俩都由服务端向苹果发送数据,再由苹果推送向设备,可以唤醒程序执行少量代码。

以最新的灵动岛举例

灵动岛具有“Start”、“Update”、“End”三种状态。其中更新和结束可以由后台远程推送更新唤起,简而言之,这种状态下哪怕app是不活动的状态也能唤起运行。

apns-topic:固定为{undleId}.push-type.liveactivity apns-push-type:固定为liveactivity SimulatorTargetundle:模拟器推送,设置为对应应用的{undleId} timestamp:刷新时间戳。需设置正确,否则灵动岛的推送不会生效 event:可填入update、end,对应灵动岛的更新与结束。 content-state:对应灵动岛的Attriutes

<>很明显这种方式只能做简短的代码逻辑,每次被唤醒之后10S之内会再次被挂起。不可能让服务端频繁推送更新来实现保活的。

<>3,音乐、健身、定位、通话类应用或具备此功能的应用。

<>根据设置里面展示的“后台活动,音频”,可以得出主要是播放无声音频来保证app不被死,音频播放几个重要回调(音频播放生命周期)里面能做的事情太多了。基本上就是起了一个repeat的定时器,定时器多久执行一次取决于音频时长。如我播放1秒的音频,那就是个1秒钟的重复运行定时器。可作性特别强,如我想在音频开始播放时new一个AudioRecorder什么的记录麦克风那太可行了。

所以...

已卸载闲鱼,支付宝已注销账号。由于最后一笔订单没有超过15天,没有注销账号成功。

2012年1月12注册的。累计消费44万。拜拜了。

------

2023-12-26更新

教大家一个简单的识别App是否有后台播放音频的逻辑。

1,打开音乐播放App,网易云或者Applemusic之类的播放音乐。

2,进入某App,如果这个App界面没有显示播放音乐你的音乐播放器停了,那有概率是App后台播放音乐。还有可能是播放音乐/直播等占用audioSession了你没看到。

3,某个App前台进后台你的音乐停了,那绝对是后台播放音频了。

------

2024-06-24更新

<>有人评论说是后台定位导致的保活。我在这里分析一下。

首先参照第3条【音乐、健身、定位、通话类应用或具备此功能的应用】,我不清楚有没有申请后台定位权限,即

CLLocationManager.requestAlwaysAuthorization

1,申请后台定位权限的app,会弹出一个“后台使用期间”的弹窗让用户选择,我的里面只有高德允许后台定位。

2,虽然申请了这个权限可以在用户定位发声明显变化时或者进入/离开“app所设置的地理围栏”时触发,但是并不会太频繁的作为soce1事件输入给app。

结合以上2点所以这个可能也pass。

然后他提到cpu占用异常会被看门狗死应用,我只能说,外行太想当然。iOS开发者耳熟能详的0xadf00dcrash,也就是watchdog超时,这种崩溃是指主线程占用异常,看门狗机制非常宽容,只有主线程被完全阻塞的情况下才会crash。以苹果A17的6核心举例,哪怕599%的cpu占用率,只要主线程还能响应,它都不会给你了。而且如果是我来写这个后台保活代码,我又不用刷新UI(反正后台执行逻辑用户也看不到),我都不用在主线程,直接随便new一个子线程队列去塞任务。

另外说一下,快捷指令里面的基于定位触发的自动化就是基于地理围栏,但是大家可能发现触发不准,原因是设置地理围栏的时候的定位坐标系是gcj02也就是国家02年标准,但是实际触发的逻辑里面是层面的s82也就是全球定位82年标准坐标系(苹果一直没有修复这个问题)。所以大家如果想触发准的话,在选择地点的时候要看看想触发的位置的定位在s82里面是哪里,然后选那个地方即可。

<>最近有人私信我问锁屏界面的广告播放器是什么情况...

我只能说国内产品经理没下限,利用灵动岛和远程推送,让主动唤醒用户设备,然后new一个广告播放器,触发播放广告的逻辑,的是玩的花啊。。。

第一种:iOS16以后的灵动岛设备的实时活动广告---设置---app---实时活动---关闭

第二种:不是灵动岛,但是锁屏/非锁屏情况下莫名其妙跑出一个播放器开始播放广告---设置---app---通知---关闭

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/6591.html

分享给朋友:

相关文章

互联网算命,是不是个好生意?能不能赚钱?

互联网算命,是不是个好生意?能不能赚钱?

现在的年轻人也开始“迷信”了。疫情、降薪、失业、内卷……2020年或许是这届年轻人最为困难的一年,无尽的焦虑与压力之下,他们陷入了失落与迷茫之中,失去了未来的方向。如果此时有人能够为你指引出未来的道路,你是会...

用红米手机会很丢人吗?

前些日子遇到了一位快递小哥,京东的,签收小哥年纪不算大,目测二十多岁他的手机上全是一道道极严重的划痕,有点卡,他开热点了,热点名就是手机型号,红米9a,我父母的同款现在他那边操作了一会,然后又是我这边操作了一会小哥看着我手机刷刷的,颇有些好...

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是http://www.net.cn,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接流向...

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

阿里云服务器续费价格好贵,想换一家云服务厂商,该怎么选择?

最近一台买了3年时间的腾讯云轻量服务器到期了,还有5天时间。当时买的价格是3年198元。配置是2核CPU、4GB内存,80GB SSD云硬盘,1200GB 流量包,然后中途给免费升级了CPU,从2核变成了4核。平均下来一年的费用70元不到,...

你怎么看待软件测试这个工作的?

你怎么看待软件测试这个工作的?

先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试,这几乎都是定律。我最近看了某音很多应届生以及去年毕业...

怎样使自己处于高能量状态?

1、不要习惯性的回顾过去那些让你尴尬和犯了错误的事情,不要嫌弃自己蠢。学会原谅自己,当你不断回忆那些错误和囧事的时候,告诉自己:自己确实做错了,下次不要再犯即可,不需一遍遍的回忆。这件事情已经发生,不要再一遍遍的折磨自己,不断回忆一点好处没...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。