You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别iOS应用运行的具体M1 Mac机型?

准确识别M1系列Mac上运行的iOS App机型

可行,你可以通过以下方法绕过系统的iPad模拟层限制,获取真实的M1 Mac机型信息:

1. 结合isiOSAppOnMac与底层sysctl读取真实硬件标识

当ProcessInfo.processInfo.isiOSAppOnMac为true时,说明应用正运行在Mac上的iOS App兼容层中,此时可以通过读取特定的sysctl键获取真实的Mac硬件信息,而非系统模拟的iPad标识:

获取Mac机型型号

func getRealMacModel() -> String? {
    guard ProcessInfo.processInfo.isiOSAppOnMac else {
        return nil
    }
    var size = 0
    // 读取hw.model,返回如"MacBookPro18,1"这类真实机型标识
    sysctlbyname("hw.model", nil, &size, nil, 0)
    var modelBuffer = [CChar](repeating: 0, count: size)
    sysctlbyname("hw.model", &modelBuffer, &size, nil, 0)
    return String(cString: modelBuffer)
}

获取CPU型号(辅助识别)

如果需要更直观的CPU信息(如"Apple M1 Pro"),可以读取machdep.cpu.brand_string:

func getCPUBrand() -> String? {
    guard ProcessInfo.processInfo.isiOSAppOnMac else {
        return nil
    }
    var size = 0
    sysctlbyname("machdep.cpu.brand_string", nil, &size, nil, 0)
    var cpuBuffer = [CChar](repeating: 0, count: size)
    sysctlbyname("machdep.cpu.brand_string", &cpuBuffer, &size, nil, 0)
    return String(cString: cpuBuffer)
}

2. 注意事项

  • 这些sysctl调用属于公开的系统硬件查询接口,在iOS App on Mac环境下合法,不会触发私有API检测。
  • 若应用需要上架App Store,需确保这些信息仅用于数据分析,不涉及用户隐私或违规用途,这类硬件信息采集通常是允许的。
  • 不同版本的macOS/iOS兼容层可能对部分sysctl键的返回值有调整,建议在目标系统版本上验证结果。

内容的提问来源于stack exchange,提问作者Ahmet Gulden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:05:17