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

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

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

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

分享给朋友:

相关文章

现在做抖音的话,还有机会嘛?

现在做抖音的话,还有机会嘛?

之前我问过小杨哥一个问题:“现在抖音还好做吗?”疯狂小杨哥在抖音已经突破1亿粉丝,直播间10w的在线观看人数,日常带货随便一场也是上7位数的数据。现在抖音的市场好像已经被头部占领,资源靠前,普通人似乎已经没有机会了?下面是小杨哥对于做抖音的...

需要做一个微信小程序项目,大公司价格太高怎么办?

需要做一个微信小程序项目,大公司价格太高怎么办?

一个小程序制作开发多少钱构建一个微信小程序大概需要花费多少资金? 一、自主开发如果选择自主开发,这里面门道可不少。微信小程序认证费用: 300 /年域名费用: 30 - 80 /年服务器费用: 600 - 3000 /年这么一算,扣除人力成...

如何看待台积电,三星相继停供大陆7nm及更先进芯片?

在这个事出来之前,我就看到过一个说法,两家Foundry可以在中东建厂,让中东的Fab去干“脏活”。本质上是国内企业搞几个中东的代理人,装作是中东的初创Fabless企业去下单,人家Foundry大概率睁一只眼闭一只眼,只管数钱。然而,紧接...

为什么这次 Mac mini 的 M4 版本价格这么低?

为什么这次 Mac mini 的 M4 版本价格这么低?

扫了一眼这里的回答,目测没几个人真买过 Macbook、Mac mini且真正当主力工作机用过。这个初始(丐版)版本的机器实际谈不上多便宜,备受热捧有几个原因。它这代产品整体做了重新设计,大幅缩减了尺寸,真正称得上 Mini 了。对比前代,...

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

好消息,你有毅力上200多个品,还能坚持三个月坏消息,一单没出我感觉你还是别碰抖店了,甚至电商平台都别碰 你没这个缘分我要是这样,我得用一百辆叉车叉死我自己你如果还想坚持,我直接给你这套至少价值19800学来的新思路简单来说就是 你做的好的...

如何评价小米14pro顶配可以选配卫星通话,小米15全系都无法选配?

如何评价小米14pro顶配可以选配卫星通话,小米15全系都无法选配?

雷总不是说了吗,我可以不用,但你不能没有。市面上OPPO Find X8 Pro和vivo X200 Pro的卫星通信版分别加价300,而荣耀Magic7和Magic7 Pro有卫星通信版且不加价,荣耀更显诚意。我觉得有是更好的,虽然使用卫...

发表评论

访客

看不清,换一张

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