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