本篇教程主讲如何解决在 mac 上通过 playCover 玩金铲铲时无法开通麦克风语音聊天问题
如需安装运行游戏请参看 playCover 金铲铲安装教程:https://macpa.cn/article/1724064988785205250
好了,下面我们开始麦克风问题解决,一共三步也不是很难,仔细安装步骤操作即可,设置好就可以语音聊天了

第一步,playCover 游戏设置里打开'权限同步确认'功能
我们进入 playCover 选择金铲铲图标右键-设置,绕过一栏中勾选上最后面的 'checkMicPermissionSync' 选项(不同的 playCover 版本具体展示名称位置等可能有略有差异),如下图
如果你没有这个选项,应该是 playCover 版本过旧可以安装稍新预览版的 playCover,playCover 下载地址: https://macpa.cn/resource?type=tool

第二步,前往 Mac 系统设置里授权麦克分权限
我们需要在 mac 系统设置里,找到 隐私与安全性 - 麦克风,在里面找到金铲铲游戏打开麦克风权限

第三步,通过终端指令使游戏内部绕过错误运行麦克风的代码(关键)
金铲铲目前无法使用 mac 的麦克风,包括其他游戏,特别是腾讯系列相关的无法使用麦克风,主要是因为有一段游戏代码在获取使用麦克风前的检验阶段,由于 mac 系统返回数据比 ios 慢了一些导致游戏内错误接收了效验结果,认为你当前设备不能使用麦克风,我们需要一段指令,让这个效验始终通过
具体设置过程中需使用 终端 以及 python3 指令才能完成,小白的话稍微认真有耐心一些按照下方步骤走即可
1、打开终端(可在聚焦搜索 command + 空格 内查找),然后复制输入下方修复指令(指令过长可以连点 3 下快捷全选) 如下:
EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.tencent.jkchess.app/jkchess && python -c "import sys; f=open(sys.argv[1],'rb+'); d=f.read(); i=d.find(b'\x7F\x0A\x00\x71\x93\x02\x88\x1A\xE0\x03\x13\xAA'); f.seek(i+8) if i!=-1 else exit(1); f.write(b'\x20\x00\x80\xD2'); f.close()" $EXECUTABLE && codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements
运行后如果,没有任何其他多余输出就是操作成功了,我们在重新进入游戏就可以开启语音,通过语音聊天了
2、由于该命令需要 python3 指令,如果我们执行后提示 command not found 等导致没有生效,极大可能是我们电脑上没有按照 python3 工具
python3 下载地址: https://www.python.org/downloads/
3、重新打开终端再次运行修复指令
EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.tencent.jkchess.app/jkchess && python -c "import sys; f=open(sys.argv[1],'rb+'); d=f.read(); i=d.find(b'\x7F\x0A\x00\x71\x93\x02\x88\x1A\xE0\x03\x13\xAA'); f.seek(i+8) if i!=-1 else exit(1); f.write(b'\x20\x00\x80\xD2'); f.close()" $EXECUTABLE && codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements
再次运行,如还是不行,应该是是你的 python3 指令不是 python 而是 python3,你可以将修复指令中的 python 替换为 python3 在执行
替换为 python3 后的指令:
EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.tencent.jkchess.app/jkchess && python3 -c "import sys; f=open(sys.argv[1],'rb+'); d=f.read(); i=d.find(b'\x7F\x0A\x00\x71\x93\x02\x88\x1A\xE0\x03\x13\xAA'); f.seek(i+8) if i!=-1 else exit(1); f.write(b'\x20\x00\x80\xD2'); f.close()" $EXECUTABLE && codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements