微信「快捷发图」功能到底发生什么事?

发布于 2021-10-09 22:32


全面解读你最关心的四个问题

微信昨天上了热搜,起因是有用户开启了iOS 15 的隐私新特性“记录App活动”,对所有App的隐私读取行为进行7天的监控,并使用App Privacy Insights对记录进行读取。

监控发现,微信在用户未主动激活App的情况下,在后台数次读取用户相册,每次读取时间长达1分钟。

对此,微信官方也给出了回应:

iOS系统为App开发者提供相册更新通知标准能力,相册发生内容更新时会通知到App,提醒App可以提前做准备,App的该准备行为会被记录成读取系统相册。

微信称,当用户授权微信可以读取“系统相册权限”后,为便于用户在微信聊天中按“+”时可以快捷发图,微信使用了该系统能力,使用户发送图片体验更快速流畅。上述行为均仅在手机本地完成,最新版本中微信将取消对该系统能力的使用,优化快捷发图功能。

那么问题来了,微信到底是在后台悄悄读取相册,还是确实如官方回复所说,只是iOS的机制导致?经过仔细研究,以及对相关技术专家的请教,得出以下结论。

简单来讲,该事件可用三句话解答。

1、整个热搜事件,指的都是微信"快捷发图”功能;

2、本次事件其实是iOS的系统机制造成的误解,iOS自己的接口提示App做相册更新预观察,而这个行为被iOS记录成App主动读取相册;

3、这是本地完成的动作,也没有必要上传。

关于更具体的细节问题,我们也进行了四个部分的全面分析。

1


热搜中提到的“微信相册功能”

指的到底是什么?

这是微信里的“快捷发图”功能,指的是刚截的图,或者刚编辑好的图片,进入微信对话框按”+”时,右下角会出现“你可能要发送的照片”。

2


微信有没有借此机会,

侵犯用户隐私呢?

依据现有证据来看,并不存在侵犯隐私的问题。

首先在微信的官方回复里提到了“上述行为均仅在手机本地完成”,意味着微信没收集、没上传、没使用。

其次,没必要。

也有博主也做了分析:

现在的摄像头像素越来越高了,屏幕分别率也越来越高了,意味着手机相机拍照和截屏的图片所占空间越来越大,再乘上数亿的活跃用户的量级……
我看了下我刚清理过的相册,约30MB,因为很久没换手机,空间吃紧,所以我这个相册绝对是很少很少的了,按这个大小乘以微信12.5亿的月活,大概是3.5PB,这几乎是一个最小值,因为相册几百MB甚至上G的大有人在。
也就是说,至少需要数十PB的存储来干这件事,还冒着违反刚实行的数据安全法,侵犯用户隐私被巨额罚款的风险,以及企业的声誉风险,为了什么?

经实验,拍了十几张照片放进相册,然后保持微信在前台。

吃了个饭,微信使用的流量和CPU使用时间都没有明显增加,使用一上午的微信,CPU才用了10分钟,基本都是发图或者放视频这些操作才会用到CPU渲染。

3


为什么微信会多次“访问相册”,

甚至夜间也会?

简单来说,PHPhotoLibraryChangeObserver协议能让我们知道照片相册库中的改变。Photos会发送系统图片改变的消息,APP可以遵守PHPhotoLibraryChangeObserver协议,并通过 PHPhotoLibrary的registerChangeObserver方法将对象注册为观察者,实时接收照片改变的消息。

有了这个接口能力,就很好解释为什么微信会多次“访问相册”,甚至包括夜间也会。这就像iOS系统承担一个管家的能力,会不定时地对微信发出指令,提醒微信可以做一些预准备工作。

实际上,这个cpu空闲时间唤醒微信的能力,和是否夜间无关,24小时都有可能触发,但一般大概率在夜间,因为你休息了,cpu才会比较空闲。

这个的优点就是,就是相当于你休息了,但是微信并没有休息。微信收到ios系统的指令,就像收到你的某个好友发来消息一样,就会立马开始投入准备工作。这就尽量保障了用户想要使用微信时可以更快速,用户体验更流畅。当然,这个也带来了一些弊端,就是可能有耗电耗流量的问题。

4


微信采用这个接口的目的是什么?

就是用在了上述的“+”号发图的微信聊天场景里。图什么呢?图的就是为了使用户发送图片体验更快速流畅。

从开发者角度看,这个功能是挺好用的,不用进入相册再选,直接通过这里就可以发出去。这样一个简单的小功能,在iOS里要自行实现起来可不容易。

所以,微信通过另一种方式来保证“快捷发图功能的体验,即调用iOS提供的PHPhotoLibraryChangeObserver接口,通过提前观察用户相册是否发生变化,实现提前准备。

我们回过头来看iOS提供的这个PHPhotoLibraryChangeObserver,名字就是Observer,它就是一个观察者,通过观察相册是否发生改变,来实时快速通知App。

这里再做个简单的比喻,我关了一群小白鼠在笼子里,需要知道什么时候会有小白鼠去抓喂食器,但我们总不能一直盯着,这样太费电太麻烦。所以我在喂食器上绑了个铃铛,由铃铛来提醒我。

iOS观察者模式的作用,就类似这个铃铛,它会告知APP笼子里是否有小白鼠抓喂食器。这样APP能及时知道相册里有更新并做好准备,但实际上APP没有,也不需要一直盯着相册。


END

推荐阅读
那些用推荐引擎改变世界的人

AI 人才越来越不值钱了吗?

解决中国“卡脖子”问题:研究求解器的少数者



本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材