今天没事试了下华为运动手环,于是装了个华为运动健康 App ,注册华为账号、登陆、连接设备 d 这些都没问题。
但是当我设置通知的时候猛然发现: App 列表出现了 x 还有 tg !
顿时一个激灵,这怎么出现的?
我非常好奇,华为运动健康 app 是怎么知道我有这个 App 的?此外还有 gmail 这些,都是安装的 App ,下面有个其他。
可能的点: 1.获取 app 列表?设置里面并没有这个权限选项。 2.因为共享了通知?但是使用的这段时间这些 App 也没有出现过任何通知,这些 App 我是常关的。 3.使用期间某个流程我没仔细看,点了统一同意?
设备 iPhone12 、iOS18 最新
同时我还装了小米运动健康,类似的界面,我看到了很多我装了的没装的都在一个列表,感觉是把常用的 App 都列出来了,但是华为运动健康里面显示的 X 和 tg 应该不是常用的的吧。
特别好奇这个什么过程?
于是,本着多一事不如少一事的原则,格式化手环,注销华为账号...
![]() |
1
lqt19910205 1 天前
最近也做相关的功能 应该是固定列表加 canOpenURL 检测应用是否安装
|
![]() |
2
processzzp 1 天前
@lqt19910205 canOpenURL 有限制吧,每个应用最多只能列 50 个
|
3
crazyzzm 1 天前
主流社交媒体平台一共才几家,app 会主动去适配就更少了。
这种苹果官方系统提供 api 可以检测是否有安装某 app ,简单测试的话,网页打开淘宝京东之类的,会引导下载,如果已下载直接跳转,未下载则跳转应用市场下载,原理一样的。 至于小米运动健康,有展示已安装未安装的,策略不同,有些 app 提供网页,例如 fb ,用户有安装的,点击后跳转 app 分享,未安装则打开网页分享。 有兴趣稍微深入一点点了解的话,像网站 http:// 或 https:// 开头,可以试试在浏览器中输入其他的,例如: [tel://手机号码] 拨打电话,[weixin://] 打开微信,[taobao://] 打开淘宝等等,跳转特定页面比如小程序、付款码等,都有特定路径,这些是需要 app 配置了才生效的 |
4
TrembleBeforeMe 1 天前
我看了下,有个「查询所有软件包」权限
|
![]() |
5
xiangbohua OP @crazyzzm 类似 schema 嘛?如果是这种原理,我能理解,但是这种行为不是应该前台浏览器调用才允许吗,如果这样可行的话,岂不是 app 列表等于是可以被静默的测试出来?隐私不就存在漏洞了?
|
6
TrembleBeforeMe 1 天前
@TrembleBeforeMe iPhone 的话应该是默认提供的选项,因为在 iOS 上华为运动健康只支持几个 APP 的通知开关,其他 APP 都被归类到了「其他」里。
|
![]() |
7
xiangbohua OP @lqt19910205 如果这样的话,对华为的恐惧又加深了那么一点点。。。
|
![]() |
9
xiangbohua OP @TrembleBeforeMe 你是说 iOS 提供的?入口在哪啊,按照几个老哥说的,我突然对 iOS 的隐私保护策略,产生了一丝怀疑了,如果这样的话,岂不是 app 列表基本上就相当于公开了?毕竟想知道一个常用的 app 是否安装,调一下 api 就知道了?
|
![]() |
10
xiangbohua OP @tanranran 总量只有 50 个的情况下下,国内有这么多常用的 app 他不去探测,偏偏要探测一些国内完全不能用的 app 。常用的反而出现在其他里面(难怪我看下面有个其他)。
如此解释的话,我对华为更害怕了,虽然没做啥坏事,但是谁知道他们会不会给我记在小本本上 |
11
MacsedProtoss 1 天前 via iPhone
@xiangbohua https://developer.apple.com/documentation/uikit/uiapplication/canopenurl(_:)
有审核的 如果你的 app 和你想要调用的 app 的功能八竿子打不着,苹果会拒绝 |
12
crazyzzm 1 天前
@xiangbohua 别啥都跟隐私挂钩,也别对这些那么恐惧,了解一下分析利弊即可。
大部分情况下,app 性能、交互是比网页好,所以对系统来说,开放相关 api 肯定是有必要的。 对于 app 自己来说,知道用户装了哪些 app 有什么好处,除非是特殊场景,比如企业安全要求等,否则一般不会去研究这些,毕竟正常 app 用户那么多,谁有空没事去研究所有用户装啥 app ,而且只是知道装了哪些 app ,至于这些 app 有没有登录什么的,完全是不知道的,这个前提下能有什么收益呢。正常情况下 app 检测只是为了跳转其他 app 方便打开特定页面、分享等等,只是为了交互体验更好,而且这种限制很多,本身就需要其他 app 开放相关能力才行。 |
![]() |
13
akabk 1 天前
怕了吗?收网!注销也是没用的。
只要在 Info.plist 里声明 app 的 URL Scheme 通过苹果审核就行。 |
![]() |
14
xaoflysho 1 天前
@TrembleBeforeMe 这个“查询所有软件包”权限是在哪里?
|
![]() |
15
lucasdev 1 天前 ![]() @xiangbohua #9 iOS 没有“获取 App 列表”的权限或接口,我们之前做移动安全的,iOS 设备上的 app 列表只能通过 MDM 来获取。
通过 schema 可以检测,但需要把 schema 声明在 plist 里面,app 上架的时候会审核。逆向 iOS app 的时候经常能看到有些 app 声明了友商的 schema 。 ![]() |
![]() |
16
iminto 1 天前 via Android
@xiangbohua
iOS 的隐私不是一个笑话吗? iOS 至少是无法保护你的 app 列表的,楼上说的很清楚了。 顺便告诉你个冷知识,国产安卓是可以保护应用列表不被 app 获取的。 本来原生安卓也是不可以保护应用列表隐私的,但是国产安卓厂商不像苹果一样垃圾摆烂,都做了修改,堵上了这个漏洞。 苹果永远是傲慢的。 |
![]() |
17
xiangbohua OP |
![]() |
18
xiangbohua OP @iminto app 列表这个我觉得确实有点难受, 但是你要说 iOS 隐私是个笑话,这话建议你给出实质证据,你这么说我觉得我很受伤,因为你说 iOS 隐私不行会让我觉得我是傻叉,所以你一定要说原因,不然我就当你没说( doge
|
19
TrembleBeforeMe 1 天前
@xaoflysho 之前没看见楼主用的 iPhone ,以为是安卓的,所以回复了。
|
20
TrembleBeforeMe 1 天前
@xiangbohua #9 可能我没说清楚,华为的运动健康在 iOS 上会默认提供几个通知开关选项,比如 X 、TELEGRAM 、qq 、微信、电子邮件、短信等的通知开关。
|
![]() |
21
chiaf 1 天前
大概跟屏幕使用时间功能有关系。
具体操作是:设置 -> 屏幕使用时间 -> App 限额 -> 添加限额,然后会弹出一个列表,选取 App ,然后就能看到手机中的所有 app 列表,而且列别都分好了。有时候会显示之前安装过,现在卸载了的 app 。 (刚看了下,安装过卸载了的现在几乎不显示了) |
![]() |
22
chiaf 1 天前
顺带说两个同样能获取到 app 列表的应用:
Cape 和 AAlock ,这两个都能获取到手机的所有 app ,而且 app 的分类跟屏幕使用时间中的分类是一样的😁 |
![]() |
23
winterbells 1 天前 via Android
iPhone 不知道,安卓的话增加手表支持就可以显示在列表里了(前几年做的时候)
|
![]() |
24
xaoflysho 1 天前
@TrembleBeforeMe 哦哦,好吧
|
![]() |
25
icyalala 1 天前
@chiaf 屏幕时间管理用的是 ScreenTime API: https://developer.apple.com/videos/play/wwdc2021/10123/
首先需要用户授权,其次 App 列表是系统提供的 UI ,App 本身是获取不到的。 |
![]() |
26
icyalala 1 天前
@xiangbohua URL Scheme 每个 App 最多声明 50 个,
华为这个 App 用了 45 个,其中包含国内外各大社交类 App ,包括 weixin, weibo, qq, alipay, outlook, twitter,line,fb, instagram, tg 等等。所以并没有获得你的全部列表。。。 |
27
datocp 1 天前
找不着了。这个事情在这论坛讨论过
华为/中兴/opple/vivo 还有谁?联合起草了一份标准,明确可以获得用户手机安装列表。。。 那份标准确实写在网络上,想找又找不着链接。。。 |
![]() |
28
xiangbohua OP @datocp 我是 iPhone 呢
|
![]() |
29
chiaf 1 天前 via iPhone
|
![]() |
30
xiangbohua OP @chiaf 你要绑定设备,然后有个通知设置,就是手机来通知了手环同步显示的那个功能。进去之后就是我说的那个列表,允许你控制哪些通知哪些不通知。然后我这里看到了上面有不到 10 的,然后剩下的就在其他里面
|
![]() |
31
chiaf 1 天前 via iPhone
@xiangbohua 果然
没有华为设备,复现不了🙃 |
![]() |
32
icyalala 1 天前
|
![]() |
33
kaedea 1 天前 via Android
安卓的“包可见性”特性,了解一下。
|
![]() |
34
xinyewdz 1 天前
app 列表可以做很多事情,大数据分析。你安装了哪些 app ,大概就可以给你一个画像。比如炒币的,银行 app 比较多有钱的,健身 app 等。
|
35
shinsekai 1 天前
感觉原生安卓+magisk+zygisk+shamiko+lsposed+隐藏应用列表更保护隐私?
|
36
loveour 1 天前
这有什么好恐惧的?你都用手环了。
我没做过相关开发,但是按照我的理解,这个不应该是华为检测应用,而是它们之间有一些通过协议通信的内容,有可能是通过苹果的协议。不然的话,手环上显示 APP 列表有什么用?如果是可以显示某些 APP 的通知,那么就是苹果官方提供了标准格式,手环可以调用。如果是手环上可以直接显示 APP ,比如 AppleWatch 显示微信内容,那么就是微信做了适配。手环不太可能直接侵入 APP 内部调取数据,只能是经过相应的 API ,要么调取 iOS 系统的功能,要么提供接口给 APP 调用。 |
![]() |
37
iminto 1 天前 via Android
|