View in English

  • 打开菜单 关闭菜单
  • Apple Developer
搜索
关闭搜索
  • Apple Developer
  • 新闻
  • 探索
  • 设计
  • 开发
  • 分发
  • 支持
  • 账户
在“”范围内搜索。

快捷链接

5 快捷链接

视频

打开菜单 关闭菜单
  • 专题
  • 相关主题
  • 所有视频
  • 关于

更多视频

大多数浏览器和
Developer App 均支持流媒体播放。

  • 概览
  • 转写文稿
  • 代码
  • Mac App 公证的新功能

    公证和 macOS 的组合可帮助用户通过非 App Store 渠道为其 Mac 安全下载软件。了解从 altool 到 notarytool 所需的过渡,以及 Xcode GUI 可以如何帮助您在对 App 进行公证时改善整体性能。我们还将分享有关 API 的信息,以便和任何联网设备的公证服务关联。

    资源

    • Notarizing macOS software before distribution
    • Notary API
      • 高清视频
      • 标清视频

    相关视频

    WWDC23

    • 通过环境约束保护你的 Mac App
    • Xcode 和 Xcode Cloud 中的简化分发

    WWDC22

    • 了解开发者模式

    WWDC21

    • 使用云签名在 Xcode 中分发 app
    • 更快捷、更简单地对 Mac app 进行公证

    WWDC19

    • 公证面面观
  • 下载

    ♪ 柔和乐器演奏的嘻哈音乐 ♪ ♪ 大家好 我是 Johnathan macOS 开发人员将软件 提交给公证服务 以帮助保护他们的客户 免受恶意软件的侵害 去年我们推出了 一种更快更简单的方式 通过 notarytool CLI (命令行界面) 提交 App 进行公证 今年 我们很高兴能通过为您与公证服务的交互 做出的一些重大改进 继续优化性能和灵活性 在本讲座中 我们将讨论 三个主要的主题 首先 我们将了解 从使用 altool 转换为使用 notarytool 进行公证 的重要截止日期 接下来 我们将讨论 即将推出的 Xcode 14 对 Xcode 集成所做的改进 这为 Xcode 带来了 notarytool 的提交速度 最后 我们将讨论一种灵活的 与公证服务交互的新方式 即 REST API 它让您可以在更多地方进行上传 查看提交状态并检查提交内容

    去年我们推出了 notarytool 这是一个替代 altool 进行公证的工具 在本讲座的稍后部分 我将讨论 Xcode 通过 Xcode 14 迁移到 我们最新的后端 为通过 altool 和 Xcode 13 进行的公证 准备好迁移路径之后 我们宣布使用这些旧方法进行公证的 截止日期是 2023 年秋季 如果您从 altool 迁移到 notarytool 时需要帮助 请参考去年的讲座 “更快更简单的 Mac App公证方式” 这里还有一些细节要说明 包括捆绑在 Xcode 13 中的 notarytool CLI 在 2023 年秋季的 截止日期之后还能继续工作 不过 与往常一样 我们鼓励您进行更新 以接收最新的改进和修补程序 但我们将在该截止日期后停止支持 使用 Xcode 13 UI 上传到公证服务 请继续关注 Xcode 14 中的 一些性能改进 但在很大程度上您可以预期 您的工作流程不会改变 最后 所有形式的 altool 公证 将在 2023 年秋季停止工作 有关迁移到 notarytool 的详细信息 也请参考去年的 WWDC 讲座 接下来 我们将谈谈 Xcode 14 中公证方式的变化 我们已经迁移了 Xcode 中内置的公证支持功能 以使用与我们去年推出的 notarytool CLI 相同的可靠后端 因此 我们很高兴 为 Xcode 14 带来 大约 4 倍的性能提升 这与我们去年 针对 notarytool 宣布的 性能提升是一致的 最棒的是 除了更新 您无需更改项目设置或工作流程 即可获得这种性能提升 对于本讲座的最后一个主题 我们很高兴地宣布一项新服务 Notary REST API 这项新服务让您可以在更多地方 更灵活地与公证服务进行交互 我们看一下几个重要的概念 这个新的 API 旨在 为公证服务提供更灵活的界面 作为基于 JSON 的 Web 服务 集成在大多数语言里应该相当简单 此 API 允许您 从任何有网络连接的地方 上传提交文件 包括持续集成服务器 在这些地方您目前可能 没有运行 macOS 此外 该 API 还支持 与公证服务的其他交互 例如检索您的提交历史记录 或过去的提交详情 我们引入 REST API 的 目标是 支持从更多平台提交软件进行公证 并允许在自动化系统中 更轻松地与公证人进行交互 提供了当前的提交方法 Xcode 和 notarytool 之外的补充方式 可用于这些方法目前无法运行的地方 比如基于 Linux 的持续集成 举个例子 假设您希望部署管道 在分发之前将您的 App 提交给公证人 通过这个新的 API 和一些基本的脚本 您可以轻松地实现该过程的自动化 在我开始正题之前 一个重要的主题是身份验证 您可以通过像其他 App Store Connect API 一样 使用 JSON Web Tokens 或 JWT 的 API 进行身份验证 有关身份验证或我将要展示的代码 的更多详细信息 请访问下面链接的 REST API 文档 在这些代码片段中 我假设您将有效的 JWT 作为令牌变量传递给函数 我们来看一个在 Python 中 向公证人提交文件的例子 其他编程语言也适用 同样的基本流程 将文件上传给公证人有两个主要步骤 第一步是通知公证人 您希望上传文件 其中包含有关该文件的一些基本信息 如文件名和 SHA-256 响应包含上传文件所需的信息 和通过我们的管道 跟踪提交文件的 ID 第二步是通过 Amazon S3 实际上传文件进行公证 您需要利用 您最喜欢的 S3 SDK 对于这个例子 我将使用 boto3 库 在这里我们使用 上一次调用中返回的临时凭证 进行身份验证并创建客户端 然后 我们使用客户端将文件上传到 第一步的响应中指定的存储桶和对象 上传后 提交文件将 通过公证管道处理 对于大多数提交文件 此过程应在 15 分钟内完成 上传后 您应在分发前确认 公证服务已成功处理 您提交的文件 从广义上讲 有两种方法可以做到这一点 第一种方法 也是最简单的方法 是通过相同的 API 来检查结果 另一种选择是借助于 随 notarytool 引入的 webhook 支持 首先 我们看一下 API 方法 查看向公证人提交的文件的状态 非常简单 您可以使用在上传过程中收到的 提交 ID 提出请求 响应包含提交文件的当前状态 该状态将一直为“进行中” 直到公证人完成处理 然后该状态将转换为 提交文件的最终状态 例如已接受或无效 提交完成后 您可以使用该 API 来检索此次上传的公证日志 有关这些端点的更多详情 请参阅 Notary REST API 文档 接下来 我们将讨论获取状态的 第二种方法:webhook 在 webhook 工作流程中 过程大致相同 但这次您将在初始上传请求中 提供 webhook URL 有关格式的详细信息 请参阅 Notary REST API 文档 和以前一样 这将触发公证服务 来分析您提交的文件 当自动分析结束时 会创建工单 并保存最终状态 完成后 公证服务将调用 提供的 webhook URL 此调用的内容包括提交 ID 团队 ID 和证明其来自我们的签名 收到该通知后 您可以选择下一步做什么 例如 您可以通知原始提交者 或启动自动分发管道 与使用 notarytool 等待相比 这允许您将上传文件的系统 与公证后自动执行操作的系统分离 我们很高兴看到 这个新的 REST API 打开了 与持续集成系统 和其他为 macOS 构建软件的工具 进行更多集成的大门 在本讲座即将结束时 再次提醒一下 转换为使用 Xcode 14、notarytool 或直接使用 REST API 的截止日期 是 2023 年秋季 最后 如果您还不能在部署管道中 使用 notarytool 现在试用 Notary REST API 将为您带来启动自动化的机会 您可以在下面找到文档链接 谢谢 我希望您喜欢 WWDC 22 的其余部分 ♪

    • 4:53 - REST API: upload file for notarization

      # Upload file for notarization
      
      def upload_file(token, filepath, sha256):
          data = { "sha256": sha256, "submissionName": os.path.basename(filepath) }
          resp = requests.post(
             "https://appstoreconnect.apple.com/notary/v2/submissions",
              json=data,
              headers={"Authorization": "Bearer " + token})
      
          output = resp.json()
          aws_info = output["data"]["attributes"]
          submission_id = output["data"]["id"] 
      
          client = boto3.client(
              "s3",  
              aws_access_key_id=aws_info["awsAccessKeyId"],
              aws_secret_access_key=aws_info["awsSecretAccessKey"],
              aws_session_token=aws_info["awsSessionToken"])
          client.upload_file(filepath, aws_info["bucket"], aws_info["object"])
    • 6:12 - REST API: wait for completion

      # Wait for completion
      
      def watch_upload(submission_id, token):
          while True:
              resp = requests.get(
                  "https://appstoreconnect.apple.com/notary/v2/submissions/" + submission_id, 
                  headers={"Authorization": "Bearer " + token})
      
              output = resp.json()
              current_status = output["data"]["attributes"]["status"]
              
              if current_status != "In Progress":
                  return current_status # For example: Accepted or Invalid
      
              time.sleep(30) # Allow time for submission to progress
  • 正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。

    提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。

Developer Footer

  • 视频
  • WWDC22
  • Mac App 公证的新功能
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载 (英文)
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    获取 Apple Developer App。
    版权所有 © 2025 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则