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

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

  •  
  •   a66243766 · 10 天前 · 2541 次点击

    /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 with 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
    a66243766
        1
    a66243766  
    OP
       10 天前
    MediaMate.app 正在播放 获取已经失效,刘海无效。



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

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

    这是 ChatGPT 告诉我的:

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

    查了两天,还是没解决我的问题。
    icyalala
        9
    icyalala  
       10 天前
    @a66243766 我 Github 搜了一下用的人还真不少。。。
    https://github.com/aviwad/LyricFever/issues/94#issuecomment-2746155419
    苹果这是明确用 entitlements 来限制权限了
    GPLer
        10
    GPLer  
       10 天前 via Android
    已经升完了,话说对用户来说,如果不使用这个特性,是不是升级上去更好,允许查询控制媒体播放这个接口看上去就很危险。
    0619
        11
    0619  
       10 天前
    @ST0RMTR00PER 请问 Airbuddy 3 在哪里下载
    ST0RMTR00PER
        12
    ST0RMTR00PER  
       10 天前
    https://v2.airbuddy.app/join-beta 填入邮箱就会收到 Beta 测试,但是需要 2 的激活码,不建议用 3 ,我用了后发现有问题。
    xuegy
        13
    xuegy  
       10 天前
    这不就是像之前的剪贴板一样堵住了隐私漏洞吗?开发者急了,说明...
    JohnSwit
        14
    JohnSwit  
       10 天前
    我说怎么我显示当前播放信息,控制播放/暂停的功能为啥失效了,原来是这个问题
    PhDLuffy
        15
    PhDLuffy  
       9 天前
    控制用户播放器干嘛?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:05 · PVG 13:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.