有没有做 iOS 开发的朋友, iOS 的后台刷新真的有用吗?

2022-11-17 17:44:25 +08:00
 xiebruce

比如微信消息问题,收到消息推送后,打开会一直加载,如果消息很多就会加载很久,我知道这是因为 iOS 的推送是系统的推送,不是 app 自己做的,所以进入 app 后要重新加载一遍,这样有助于省电,以及 app 被滥用(在后台搞小动作)等。

但是 iOS 不是有个“后台刷新”功能嘛,那如果开启了后台刷新,它到底允许刷新什么呢?因为我是感觉既然开了 app 后台刷新,那微信的消息应该能在后台自动加载下来,而不是等我打开微信之后才加载呀。

有没有做 iOS 开发的朋友知道“后台刷新”这功能具体逻辑?它到底允许后台刷新什么?

3656 次点击
所在节点    程序员
27 条回复
randomNick
2022-11-17 18:36:38 +08:00
对应的专业术语叫 background fetch ,就是 app 进入后台后,系统会根据自己的判定逻辑允许 app 在后台进行部分数据拉取。大部分 app 都没用好这个机制,简而言之就是没 luan 用的功能,关了完全不影响
rekulas
2022-11-17 18:42:13 +08:00
我感觉为了尽量省点后台刷新有可能只是加载了数据,但并没有渲染到 ui 层?所以打开的时候需要渲染吧
zhaokun
2022-11-17 20:50:21 +08:00
不是 ios 开发,了解到的大多数 app 都没有适配
adminisqq
2022-11-17 20:53:40 +08:00
我想问是国内的 app 生态环境导致没适配、不想适配?还是全球开发者大部分都这样?有做得好的 app 参考吗?
bjzhush
2022-11-17 21:11:56 +08:00
有用,目前我只用到一个,但是非常有用。
我 iPhone 的所有照片都会自动备份到 google photos ,打开了后台刷新,我观察过,正常手机拍个照,十来分钟就能自动备份到 google photos ,平时压根不用自己手动备份。
阿里云盘之类的也有后台自动备份,但是它不配,我给关了~~
xiebruce
2022-11-17 21:22:18 +08:00
@randomNick 原来如此哈哈
wwbfred
2022-11-17 21:22:38 +08:00
我已经关了几年了,并没有发现什么影响。
当然你要是有什么特殊的场景,我不敢保证,需要自己测试。
xiebruce
2022-11-17 21:23:33 +08:00
@bjzhush 哦哦,云盘备份有用
xiebruce
2022-11-17 21:23:58 +08:00
@wwbfred 我也是一直关着
summer2019
2022-11-17 21:24:42 +08:00
@rekulas 渲染数据压根不需要多少性能,或者时间
xiebruce
2022-11-17 21:24:50 +08:00
@rekulas 也许吧哈哈
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.

```
weeei
2022-11-17 21:49:51 +08:00
这个功能的问题是 App 不知道自己能运行多久就会被系统暂停。所以开发者也没有什么意愿去适配。更何况这个只是锦上添花的功能。总不能用户关闭了后台刷新就让 App 功能有缺失,所以它不是必须适配的。
对于国内 App 直接关闭这个权限,我都担心它用来给我预加载开屏广告。
SimleCp
2022-11-17 22:12:45 +08:00
这个功能, 在系统里我就直接关了, 不允许后台刷新. 所以 app 适配不适配没什么关系. @bjzhush 谷歌确实对这种小功能很在意, 谷歌邮箱, 在网页上阅读了邮件, 过几秒, 手机上的通知就会自动消失. 而 QQ 邮箱就很弱智的继续显示, 你在网页上看了邮件, 手机上的通知还要自己划拉掉.
xiebruce
2022-11-17 23:57:17 +08:00
@aptx4689 从这个链接里看,那截图里是有个“background fetch”,理论上开启了后台更新,应该是可以后台获取数据的,不过看上去微信似乎并没有用上这功能
erhaosan
2022-11-18 00:07:50 +08:00
有用,总开关开着,但只允许了两三个 App 。和楼上一样谷歌相册用来同步,还有一个 NewNewsWire 用来自动更新 RSS 。
mu2er
2022-11-18 00:56:38 +08:00
感觉定位的 always 权限都比这个后台刷新更能保活 app ,但会安慰性的打开一些需要后台备份的 app 。
rekulas
2022-11-18 10:05:28 +08:00
@summer2019 很费的吧,虽然没做过 ios 但做过其他非主流手机的,接收和通知只需后台一个微线程就搞定了,渲染到 ui 需要把整个 app 启起来,资源消耗量不是一个级别,系统会允许这样搞?
GoodRui
2022-11-18 14:17:34 +08:00
可以参考这个主题
https://www.v2ex.com/t/896048
aptx4689
2022-11-18 15:05:18 +08:00
@xiebruce 文档的意思是,如果程序没实现,就不会后台刷新,即使是打开了这个开关

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896004

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX