如何区分初代与2/3代Apple TV Siri Remote及禁用触控区
准确识别Apple TV遥控器版本的方法
目前通过vendorName属性只能获取到统一的"Remote"值,无法区分初代Apple TV遥控器和配备可点击D-Pad的新款遥控器,以下是几种可靠的识别方式:
检测物理按键支持
新款遥控器具备可点击的D-Pad物理按键,初代仅支持触控操作。可以通过MicroGamepad的按键支持状态判断:if let gamepad = microGamepad.gamepad { let hasPhysicalDPad = gamepad.dpad.up.isSupported && gamepad.dpad.down.isSupported && gamepad.dpad.left.isSupported && gamepad.dpad.right.isSupported if hasPhysicalDPad { // 判定为新款带D-Pad的遥控器,可执行禁用触控区逻辑 } else { // 判定为初代遥控器 } }读取产品标识符
利用GCController或GCDevice的productIdentifier属性,不同版本遥控器的标识符存在差异:if let productID = microGamepad.controller?.productIdentifier { switch productID { case "com.apple.GCClient.AppleTVRemote": // 初代遥控器 case "com.apple.GCClient.AppleTVRemoteDPad": // 新款带D-Pad的遥控器 // 禁用触控区的代码逻辑在此实现 default: // 非目标遥控器设备 } }注:实际标识符需通过真机测试验证,不同tvOS版本可能存在细微差异。
系统版本辅助验证
新款D-Pad遥控器随tvOS 13及以上版本推出,可结合系统版本做补充判断(需注意旧款Apple TV也可能搭配新款遥控器,仅作辅助):if #available(tvOS 13.0, *) { // 具备新款遥控器支持条件,需结合硬件检测最终确认 } else { // 仅可能是初代遥控器 }
内容的提问来源于stack exchange,提问作者Tiago Mendes
相关产品推荐
相关产品推荐

