V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangbohua
V2EX  ›  问与答

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

  •  
  •   xiangbohua · 1 天前 via iPhone · 1850 次点击

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

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

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

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

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

    设备 iPhone12 、iOS18 最新

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

    特别好奇这个什么过程?

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

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

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

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

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

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

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

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

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

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

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

    具体操作是:设置 -> 屏幕使用时间 -> App 限额 -> 添加限额,然后会弹出一个列表,选取 App ,然后就能看到手机中的所有 app 列表,而且列别都分好了。有时候会显示之前安装过,现在卸载了的 app 。

    (刚看了下,安装过卸载了的现在几乎不显示了)
    chiaf
        22
    chiaf  
       1 天前
    顺带说两个同样能获取到 app 列表的应用:

    Cape 和 AAlock ,这两个都能获取到手机的所有 app ,而且 app 的分类跟屏幕使用时间中的分类是一样的😁
    winterbells
        23
    winterbells  
       1 天前 via Android
    iPhone 不知道,安卓的话增加手表支持就可以显示在列表里了(前几年做的时候)
    xaoflysho
        24
    xaoflysho  
       1 天前
    @TrembleBeforeMe 哦哦,好吧
    icyalala
        25
    icyalala  
       1 天前
    @chiaf 屏幕时间管理用的是 ScreenTime API: https://developer.apple.com/videos/play/wwdc2021/10123/
    首先需要用户授权,其次 App 列表是系统提供的 UI ,App 本身是获取不到的。
    icyalala
        26
    icyalala  
       1 天前
    @xiangbohua URL Scheme 每个 App 最多声明 50 个,
    华为这个 App 用了 45 个,其中包含国内外各大社交类 App ,包括 weixin, weibo, qq, alipay, outlook, twitter,line,fb, instagram, tg 等等。所以并没有获得你的全部列表。。。
    datocp
        27
    datocp  
       1 天前
    找不着了。这个事情在这论坛讨论过

    华为/中兴/opple/vivo 还有谁?联合起草了一份标准,明确可以获得用户手机安装列表。。。
    那份标准确实写在网络上,想找又找不着链接。。。
    xiangbohua
        28
    xiangbohua  
    OP
       1 天前
    @datocp 我是 iPhone 呢
    chiaf
        29
    chiaf  
       1 天前 via iPhone
    @icyalala 卸载安装了一遍,确实有提示😅
    设置里面也能看到屏幕使用时间的开关是打开的。

    下载了华为运动健康 app ,没找到 op 说的 app 列表,可能是得绑定设备后才能看到吧。
    xiangbohua
        30
    xiangbohua  
    OP
       1 天前
    @chiaf 你要绑定设备,然后有个通知设置,就是手机来通知了手环同步显示的那个功能。进去之后就是我说的那个列表,允许你控制哪些通知哪些不通知。然后我这里看到了上面有不到 10 的,然后剩下的就在其他里面
    chiaf
        31
    chiaf  
       1 天前 via iPhone
    @xiangbohua 果然
    没有华为设备,复现不了🙃
    icyalala
        32
    icyalala  
       1 天前
    @xiangbohua @chiaf
    下载个 imazing ,免费版就够,导出你的 ipa ,解压找到 Info.plist ,里面有这个 App 的权限列表和 scheme 列表。
    kaedea
        33
    kaedea  
       1 天前 via Android
    安卓的“包可见性”特性,了解一下。
    xinyewdz
        34
    xinyewdz  
       1 天前
    app 列表可以做很多事情,大数据分析。你安装了哪些 app ,大概就可以给你一个画像。比如炒币的,银行 app 比较多有钱的,健身 app 等。
    shinsekai
        35
    shinsekai  
       1 天前
    感觉原生安卓+magisk+zygisk+shamiko+lsposed+隐藏应用列表更保护隐私?
    loveour
        36
    loveour  
       1 天前
    这有什么好恐惧的?你都用手环了。
    我没做过相关开发,但是按照我的理解,这个不应该是华为检测应用,而是它们之间有一些通过协议通信的内容,有可能是通过苹果的协议。不然的话,手环上显示 APP 列表有什么用?如果是可以显示某些 APP 的通知,那么就是苹果官方提供了标准格式,手环可以调用。如果是手环上可以直接显示 APP ,比如 AppleWatch 显示微信内容,那么就是微信做了适配。手环不太可能直接侵入 APP 内部调取数据,只能是经过相应的 API ,要么调取 iOS 系统的功能,要么提供接口给 APP 调用。
    iminto
        37
    iminto  
       1 天前 via Android
    @xiangbohua 这个论坛里用了苹果被 96110 打电话或勒令上门的案例太多了,只不过现在都进了水深火热板块了。

    还有就是苹果的浏览器内置的拦截和审核合作伙伴是腾讯,这你了解过吗
    iminto
        38
    iminto  
       1 天前 via Android
    @shinsekai 也不用这么复杂,类原生系统,把不老实的 app 关在炼妖壶里就行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2492 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.