比如微信消息问题,收到消息推送后,打开会一直加载,如果消息很多就会加载很久,我知道这是因为 iOS 的推送是系统的推送,不是 app 自己做的,所以进入 app 后要重新加载一遍,这样有助于省电,以及 app 被滥用(在后台搞小动作)等。
但是 iOS 不是有个“后台刷新”功能嘛,那如果开启了后台刷新,它到底允许刷新什么呢?因为我是感觉既然开了 app 后台刷新,那微信的消息应该能在后台自动加载下来,而不是等我打开微信之后才加载呀。
有没有做 iOS 开发的朋友知道“后台刷新”这功能具体逻辑?它到底允许后台刷新什么?
1
randomNick 2022-11-17 18:36:38 +08:00 1
对应的专业术语叫 background fetch ,就是 app 进入后台后,系统会根据自己的判定逻辑允许 app 在后台进行部分数据拉取。大部分 app 都没用好这个机制,简而言之就是没 luan 用的功能,关了完全不影响
|
2
rekulas 2022-11-17 18:42:13 +08:00
我感觉为了尽量省点后台刷新有可能只是加载了数据,但并没有渲染到 ui 层?所以打开的时候需要渲染吧
|
3
zhaokun 2022-11-17 20:50:21 +08:00 via iPhone
不是 ios 开发,了解到的大多数 app 都没有适配
|
4
adminisqq 2022-11-17 20:53:40 +08:00
我想问是国内的 app 生态环境导致没适配、不想适配?还是全球开发者大部分都这样?有做得好的 app 参考吗?
|
5
bjzhush 2022-11-17 21:11:56 +08:00 4
有用,目前我只用到一个,但是非常有用。
我 iPhone 的所有照片都会自动备份到 google photos ,打开了后台刷新,我观察过,正常手机拍个照,十来分钟就能自动备份到 google photos ,平时压根不用自己手动备份。 阿里云盘之类的也有后台自动备份,但是它不配,我给关了~~ |
6
xiebruce OP @randomNick 原来如此哈哈
|
7
wwbfred 2022-11-17 21:22:38 +08:00
我已经关了几年了,并没有发现什么影响。
当然你要是有什么特殊的场景,我不敢保证,需要自己测试。 |
10
summer2019 2022-11-17 21:24:42 +08:00 via iPhone
@rekulas 渲染数据压根不需要多少性能,或者时间
|
12
aptx4689 2022-11-17 21:37:45 +08:00
https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background/about_the_background_execution_sequence
``` If your app is in memory and suspended when an event arrives, the system resumes the app in the background, following this sequence: The system resumes the app. UIKit calls the app delegate’s applicationDidEnterBackground(_:) method. UIKit delivers the event that caused the launch. The app’s snapshot is taken. The app may be suspended again. ``` |
13
weeei 2022-11-17 21:49:51 +08:00 2
这个功能的问题是 App 不知道自己能运行多久就会被系统暂停。所以开发者也没有什么意愿去适配。更何况这个只是锦上添花的功能。总不能用户关闭了后台刷新就让 App 功能有缺失,所以它不是必须适配的。
对于国内 App 直接关闭这个权限,我都担心它用来给我预加载开屏广告。 |
14
SimleCp 2022-11-17 22:12:45 +08:00 3
这个功能, 在系统里我就直接关了, 不允许后台刷新. 所以 app 适配不适配没什么关系. @bjzhush 谷歌确实对这种小功能很在意, 谷歌邮箱, 在网页上阅读了邮件, 过几秒, 手机上的通知就会自动消失. 而 QQ 邮箱就很弱智的继续显示, 你在网页上看了邮件, 手机上的通知还要自己划拉掉.
|
15
xiebruce OP @aptx4689 从这个链接里看,那截图里是有个“background fetch”,理论上开启了后台更新,应该是可以后台获取数据的,不过看上去微信似乎并没有用上这功能
|
16
erhaosan 2022-11-18 00:07:50 +08:00 via iPhone
有用,总开关开着,但只允许了两三个 App 。和楼上一样谷歌相册用来同步,还有一个 NewNewsWire 用来自动更新 RSS 。
|
17
mu2er 2022-11-18 00:56:38 +08:00 via iPhone
感觉定位的 always 权限都比这个后台刷新更能保活 app ,但会安慰性的打开一些需要后台备份的 app 。
|
18
rekulas 2022-11-18 10:05:28 +08:00 1
@summer2019 很费的吧,虽然没做过 ios 但做过其他非主流手机的,接收和通知只需后台一个微线程就搞定了,渲染到 ui 需要把整个 app 启起来,资源消耗量不是一个级别,系统会允许这样搞?
|
19
GoodRui 2022-11-18 14:17:34 +08:00 via iPhone
可以参考这个主题
https://www.v2ex.com/t/896048 |
21
summer2019 2022-11-18 15:19:47 +08:00 via iPhone
@rekulas 如果你是指对比获取数据来说的话,刷新 UI 确实需要更多资源。
不过,既然当时在后台,完全不需要刷新 UI ,等切换到前台再刷新也不迟。 |
22
huangqihong 2022-11-18 15:26:29 +08:00
@bjzhush 我保存在阿里云盘的壁纸,判断有张异常,不知道为啥,就是不准你下载了,可是真的就是一张普通的壁纸啊
|
23
bjzhush 2022-11-18 15:36:51 +08:00
@huangqihong 被误判了呗,这一点百度网盘、阿里云盘跟 Dropbox 、google drive 完全没法比,所以百度网盘阿里云盘我只用于收点电影之类的
|
24
Facebook8866 2022-11-18 18:47:11 +08:00 via Android
有沒有會安裝黑蘋果係統的,請求教一下
|