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

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

  •  
  •   xiangbohua · 41 天前 via iPhone · 2413 次点击
    这是一个创建于 41 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天没事试了下华为运动手环,于是装了个华为运动健康 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  
       41 天前
    最近也做相关的功能 应该是固定列表加 canOpenURL 检测应用是否安装
    processzzp
        2
    processzzp  
       41 天前
    @lqt19910205 canOpenURL 有限制吧,每个应用最多只能列 50 个
    crazyzzm
        3
    crazyzzm  
       41 天前
    主流社交媒体平台一共才几家,app 会主动去适配就更少了。
    这种苹果官方系统提供 api 可以检测是否有安装某 app ,简单测试的话,网页打开淘宝京东之类的,会引导下载,如果已下载直接跳转,未下载则跳转应用市场下载,原理一样的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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