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

使用Xcode公证后App仍提示开发者身份无法确认的问题求助

问题分析与解决方法

用户场景:使用Xcode完成MyApp的Notarization(公证)并钉入ticket后,用户打开应用仍收到错误:

MyApp can’t be opened because the identity of the developer cannot be confirmed.

通过codesign -dv --verbose=4 MyApp.app/验证,应用签名有效且已钉入公证ticket,但错误依旧。以下是可能的原因及解决步骤:

可能原因1:Apple服务器公证状态未同步

公证完成后,Apple的全球服务器可能存在几小时的同步延迟,导致部分地区的用户设备无法立即识别公证状态。

  • 解决:等待24小时后再让用户测试;若刚完成公证,可重新提交一次公证流程确保状态同步。

可能原因2:应用分发过程中被篡改或损坏

分发的安装包可能在压缩、传输或解压过程中损坏,破坏了签名或公证ticket。

  • 验证:在用户设备上执行spctl -a -v MyApp.app,查看Gatekeeper的具体评估结果,确认是否存在签名验证失败的细节。
  • 解决:重新生成公证后的安装包,使用无压缩的方式分发(或用ditto命令创建压缩包,避免破坏签名):
    ditto -c -k --sequesterRsrc --keepParent MyApp.app MyApp.zip
    

可能原因3:用户设备Gatekeeper缓存异常

用户设备的Gatekeeper缓存可能残留旧的验证记录,导致无法识别新的公证状态。

  • 解决:让用户执行以下命令重置Gatekeeper缓存,然后重启设备:
    sudo spctl --reset-default
    

可能原因4:签名/公证流程存在隐性问题

虽然codesign显示签名正常,但可能存在细微的不符合要求的配置:

  • 检查应用内所有第三方框架/插件是否都用相同的Developer ID签名,避免存在未签名或签名不匹配的组件。
  • 确认Info.plist中的CFBundleIdentifier与签名的Team ID完全匹配。
  • 重新执行完整流程:
    1. 用Developer ID身份重新签名应用:
      codesign -s "Developer ID Application: Your Team Name (TeamID)" --deep --force MyApp.app
      
    2. 重新提交公证:
      xcrun notarytool submit MyApp.zip --keychain-profile "NotaryToolProfile" --wait
      
    3. 重新钉入公证ticket:
      xcrun stapler staple MyApp.app
      

可能原因5:用户macOS版本兼容性

较老的macOS版本可能不支持最新的Developer ID证书或公证机制。

  • 解决:让用户将macOS更新到当前支持的稳定版本(至少macOS 10.15 Catalina及以上,推荐最新版本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:23:20