MacOS 移除私有化接口,需要的谨慎升级。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vincentchyu
V2EX    macOS

MacOS 移除私有化接口,需要的谨慎升级。

  •  
  •   vincentchyu 266 天前 3857 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    /System/Library/PrivateFrameworks/MediaRemote.framework

    Response: playbackQueue<D42CE038-BF50-420F-8CF6-C48AA27EF723 now-playing-44118 /M/L/AF/A600.000000x600.000000/R[0:1]> returned wit error <Error Domain=kMRMediaRemoteFrameworkErrorDomain Code=3 "Operation not permitted" UserInfo={NSLocalizedDescription=Operation not permitted}> in 0.0771 seconds

    macOS 15.4 发布说明分析

    通过搜索 macOS 15.4 发布说明( macOS Sequoia 15.4 Release Notes | Apple Developer Documentation ),未找到直接提及新媒体框架或 API 的内容。用户支持页面( What's new in the updates for macOS Sequoia - Apple Support )列出了一些媒体相关功能(如 Podcasts 小部件),但未涉及开发者 API 。

    在 2025 年 4 月 2 日的背景下,macOS 15.4 (即 macOS Sequoia 15.4 )移除 /System/Library/PrivateFrameworks/MediaRemote.framework 引发了开发者对获取当前播放媒体信息替代方案的关注。以下是详细调查结果,涵盖了探索过程和可能的解决方案。

    背景与问题分析

    MediaRemote.framework 是一个私有框架,过去用于与媒体服务器( mediaserverd )通信,允许查询当前播放信息、控制播放/暂停等功能(如 Dev:MediaRemote.framework - The Apple Wiki 所述)。其移除意味着开发者需要寻找新的方法,尤其是在 macOS 15.4 发布后( macOS Sequoia 15.4 Release Notes | Apple Developer Documentation )。调查发现,官方发布说明未明确提及替代方案,可能因其私有性质不予公开。

    15 条回复    2025-04-04 08:53:38 +08:00
    vincentchyu
        1
    vincentchyu  
    OP
       266 天前
    MediaMate.app 正在播放 获取已经失效,刘海无效。



    vincentchyu
        2
    vincentchyu  
    OP
       266 天前
    移除 build 报错,目录 MediaRemote.framework 已经不存在

    mietl
        3
    mietl  
       266 天前
    icyalala
        4
    icyalala  
       266 天前 via iPhone
    都 PrivateFrameworks 了你还能指望依赖这个?就算正常用 Public API 大版本升级也经常崩给你看
    ST0RMTR00PER
        5
    ST0RMTR00PER  
       266 天前
    我怀疑我的这个问题是不是因为这个原因: t/1122695
    vincentchyu
        6
    vincentchyu  
    OP
       266 天前
    @ST0RMTR00PER 应该不是的,你这个框架在之前的版本就已经存在了,https://github.com/alexey-lysiuk/macos-sdk/tree/main/MacOSX14.5.sdk/System/Library/PrivateFrameworks/ChronoCore.framework/Versions/A ,感觉是交互类相关的框架
    vincentchyu
        7
    vincentchyu  
    OP
       266 天前
    @icyalala 很多不能上架 appstore 的 app 其实都在调用这个私有化框架,
    ST0RMTR00PER
        8
    ST0RMTR00PER  
       266 天前
    @a66243766 因为我看这个 chronod 有调用到 Widget 之类的 API ,我使用的 Airbuddy 3 的 Widget 有用到 Now Playing 的 API ,然后一启用就会占满 CPU 。

    这是 ChatGPT 告诉我的:

    初步结论:
    chronod 正陷入异常的同步调用链和资源竞争,表现为:
    多线程死循环轮询(_dispatch_kq_poll )
    闭包嵌套调用( Swift Dispatch 和 CoreFoundation 层)
    与 ReplicatorServices 模块高频互动,疑似为数据同步任务
    所有 CPU 占用均来源于活跃阻塞线程,而非单一任务耗时

    查了两天,还是没解决我的问题。
    icyalala
        9
    icyalala  
       266 天前
    @a66243766 我 Github 搜了一下用的人还真不少。。。
    https://github.com/aviwad/LyricFever/issues/94#issuecomment-2746155419
    苹果这是明确用 entitlements 来限制权限了
    GPLer
        10
    GPLer  
       266 天前 via Android
    已经升完了,话说对用户来说,如果不使用这个特性,是不是升级上去更好,允许查询控制媒体播放这个接口看上去就很危险。
    0619
        11
    0619  
       266 天前
    @ST0RMTR00PER 请问 Airbuddy 3 在哪里下载
    ST0RMTR00PER
        12
    ST0RMTR00PER  
       266 天前
    https://v2.airbuddy.app/join-beta 填入邮箱就会收到 Beta 测试,但是需要 2 的激活码,不建议用 3 ,我用了后发现有问题。
    xuegy
        13
    xuegy  
       266 天前
    这不就是像之前的剪贴板一样堵住了隐私漏洞吗?开发者急了,说明...
    JohnSwit
        14
    JohnSwit  
       266 天前
    我说怎么我显示当前播放信息,控制播放/暂停的功能为啥失效了,原来是这个问题
    PhDLuffy
        15
    PhDLuffy  
       265 天前
    控制用户播放器干嘛?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3237 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:02 PVG 19:02 LAX 03:02 JFK 06:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86