华为运动健康是如何获取 App 列表的?

101 天前
 xiangbohua

今天没事试了下华为运动手环,于是装了个华为运动健康 App ,注册华为账号、登陆、连接设备 d 这些都没问题。

但是当我设置通知的时候猛然发现: App 列表出现了 x 还有 tg !

顿时一个激灵,这怎么出现的?

我非常好奇,华为运动健康 app 是怎么知道我有这个 App 的?此外还有 gmail 这些,都是安装的 App ,下面有个其他。

可能的点: 1.获取 app 列表?设置里面并没有这个权限选项。 2.因为共享了通知?但是使用的这段时间这些 App 也没有出现过任何通知,这些 App 我是常关的。 3.使用期间某个流程我没仔细看,点了统一同意?

设备 iPhone12 、iOS18 最新

同时我还装了小米运动健康,类似的界面,我看到了很多我装了的没装的都在一个列表,感觉是把常用的 App 都列出来了,但是华为运动健康里面显示的 X 和 tg 应该不是常用的的吧。

特别好奇这个什么过程?

于是,本着多一事不如少一事的原则,格式化手环,注销华为账号...

2549 次点击
所在节点    问与答
38 条回复
lqt19910205
101 天前
最近也做相关的功能 应该是固定列表加 canOpenURL 检测应用是否安装
processzzp
101 天前
@lqt19910205 canOpenURL 有限制吧,每个应用最多只能列 50 个
crazyzzm
101 天前
主流社交媒体平台一共才几家,app 会主动去适配就更少了。
这种苹果官方系统提供 api 可以检测是否有安装某 app ,简单测试的话,网页打开淘宝京东之类的,会引导下载,如果已下载直接跳转,未下载则跳转应用市场下载,原理一样的。

至于小米运动健康,有展示已安装未安装的,策略不同,有些 app 提供网页,例如 fb ,用户有安装的,点击后跳转 app 分享,未安装则打开网页分享。

有兴趣稍微深入一点点了解的话,像网站 http:// 或 https:// 开头,可以试试在浏览器中输入其他的,例如: [tel://手机号码] 拨打电话,[weixin://] 打开微信,[taobao://] 打开淘宝等等,跳转特定页面比如小程序、付款码等,都有特定路径,这些是需要 app 配置了才生效的
TrembleBeforeMe
101 天前
我看了下,有个「查询所有软件包」权限
xiangbohua
101 天前
@crazyzzm 类似 schema 嘛?如果是这种原理,我能理解,但是这种行为不是应该前台浏览器调用才允许吗,如果这样可行的话,岂不是 app 列表等于是可以被静默的测试出来?隐私不就存在漏洞了?
TrembleBeforeMe
101 天前
@TrembleBeforeMe iPhone 的话应该是默认提供的选项,因为在 iOS 上华为运动健康只支持几个 APP 的通知开关,其他 APP 都被归类到了「其他」里。
xiangbohua
101 天前
@lqt19910205 如果这样的话,对华为的恐惧又加深了那么一点点。。。
tanranran
101 天前
@crazyzzm schema 检测是否安装,有 50 个限制
xiangbohua
101 天前
@TrembleBeforeMe 你是说 iOS 提供的?入口在哪啊,按照几个老哥说的,我突然对 iOS 的隐私保护策略,产生了一丝怀疑了,如果这样的话,岂不是 app 列表基本上就相当于公开了?毕竟想知道一个常用的 app 是否安装,调一下 api 就知道了?
xiangbohua
101 天前
@tanranran 总量只有 50 个的情况下下,国内有这么多常用的 app 他不去探测,偏偏要探测一些国内完全不能用的 app 。常用的反而出现在其他里面(难怪我看下面有个其他)。
如此解释的话,我对华为更害怕了,虽然没做啥坏事,但是谁知道他们会不会给我记在小本本上
MacsedProtoss
101 天前
@xiangbohua https://developer.apple.com/documentation/uikit/uiapplication/canopenurl(_:)

有审核的 如果你的 app 和你想要调用的 app 的功能八竿子打不着,苹果会拒绝
crazyzzm
101 天前
@xiangbohua 别啥都跟隐私挂钩,也别对这些那么恐惧,了解一下分析利弊即可。

大部分情况下,app 性能、交互是比网页好,所以对系统来说,开放相关 api 肯定是有必要的。

对于 app 自己来说,知道用户装了哪些 app 有什么好处,除非是特殊场景,比如企业安全要求等,否则一般不会去研究这些,毕竟正常 app 用户那么多,谁有空没事去研究所有用户装啥 app ,而且只是知道装了哪些 app ,至于这些 app 有没有登录什么的,完全是不知道的,这个前提下能有什么收益呢。正常情况下 app 检测只是为了跳转其他 app 方便打开特定页面、分享等等,只是为了交互体验更好,而且这种限制很多,本身就需要其他 app 开放相关能力才行。
akabk
101 天前
怕了吗?收网!注销也是没用的。
只要在 Info.plist 里声明 app 的 URL Scheme 通过苹果审核就行。
xaoflysho
101 天前
@TrembleBeforeMe 这个“查询所有软件包”权限是在哪里?
lucasdev
101 天前
@xiangbohua #9 iOS 没有“获取 App 列表”的权限或接口,我们之前做移动安全的,iOS 设备上的 app 列表只能通过 MDM 来获取。

通过 schema 可以检测,但需要把 schema 声明在 plist 里面,app 上架的时候会审核。逆向 iOS app 的时候经常能看到有些 app 声明了友商的 schema 。
iminto
101 天前
@xiangbohua
iOS 的隐私不是一个笑话吗? iOS 至少是无法保护你的 app 列表的,楼上说的很清楚了。

顺便告诉你个冷知识,国产安卓是可以保护应用列表不被 app 获取的。

本来原生安卓也是不可以保护应用列表隐私的,但是国产安卓厂商不像苹果一样垃圾摆烂,都做了修改,堵上了这个漏洞。

苹果永远是傲慢的。
xiangbohua
101 天前
@akabk 都知道互联网有记忆,老大哥的网那记忆更是牢固,注销肯定没有用的。收吧,要我说,我们都是鱼,只是渔网口子分大小,目前还卡不到你我。毕竟以前也是被帽子叔叔叫道居委会谈过话、四个叔叔来家里的人了。
@crazyzzm 倒也没有那么恐惧,毕竟又不干什么,对华为多少也有点刻板印象了。
xiangbohua
101 天前
@iminto app 列表这个我觉得确实有点难受, 但是你要说 iOS 隐私是个笑话,这话建议你给出实质证据,你这么说我觉得我很受伤,因为你说 iOS 隐私不行会让我觉得我是傻叉,所以你一定要说原因,不然我就当你没说( doge
TrembleBeforeMe
101 天前
@xaoflysho 之前没看见楼主用的 iPhone ,以为是安卓的,所以回复了。
TrembleBeforeMe
101 天前
@xiangbohua #9 可能我没说清楚,华为的运动健康在 iOS 上会默认提供几个通知开关选项,比如 X 、TELEGRAM 、qq 、微信、电子邮件、短信等的通知开关。

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

https://yangjunhui.monster/t/1114001

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

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

© 2021 V2EX