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

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

卡卷网12个月前 (01-06)每日看点178

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

分享给朋友:

相关文章

WordPress建设的网站为什么不推荐国内机房?

WordPress建设的网站为什么不推荐国内机房?

我劝大家不要用WordPress做国内网站,不要用国内机房的主机。原因如下:1 WordPress 很多主题和插件都是国外开发的,特别是付费版本,需要联网验证,或者远程写入。国内机房的虚拟主机和服务器大概率会屏蔽或者阻断这些连接,无法完成任...

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

学了两个月网络安全,一直未入门怎么办,知乎大佬们给些建议吧?

你才学两个月,就想入门,笑不活了,我学了8年了,还被人说是个菜鸟。我学了这么多的渗透,依然挖不到自己的漏洞。ailx10:学习CSRF漏洞ailx10:学习PHP XXE漏洞ailx10:学习CORS漏洞ailx10:学习ClickJack...

4499 元起的荣耀Magic7 系列实际使用体验怎么样,值得入手吗?

全是软文。。。。。。不过我买了,标准版。为什么买荣耀:屏幕看着舒服,玩游戏选择大屏,超声波指纹解锁。其它,系统、续航、充电、拍照,不是最强,但均衡下来短板都不是很短。其它米OV,IQ、一加,都看了,预算有限,米OV的小屏不感兴趣,OPPO硬...

为什么扫码支付在中国流行,在发达国家被排斥?

因为这是一种落后的技术。卖菜的大爷花5毛钱就可以打印出一张二维码来接受付款。你觉着这种先进么?跟先进完全不沾边的。正是因为不先进,所以才能流行。卖菜大爷用不起一台先进的、具有NFC感应功能的、还能刷各种银行卡的收款机。这就是现实。发达国家,...

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

我说美国快要没招了,你信么?这次台积电宣布停止向中国大陆客户供应7纳米及更先进AI芯片,再加上前段时间台积电对华为的制裁,我们基本可以认为,台积电在高端芯片领域,已经彻底把大陆给拉黑了,这也意味着中美芯片战已经到了最关键的时刻,一旦我们克服...

如何做电商行业?

如何做电商行业?

“如何做电商*开网店”跟“如何找老婆”一样,没概况条件、没明确标准,就是扯犊子。我把话题具体一点说:具备“两三万”启动资金、掌握“选品+上架优化”基础技能,小则月入三五千、多则上万。跟摆地摊一样,有进货的钱、也不怕苦不怕累、稍微有点生意头脑...

发表评论

访客

看不清,换一张

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