View in English

  • Apple 开发者
    • 入门汇总

    探索“入门汇总”

    • 概览
    • 学习
    • Apple Developer Program

    及时了解最新动态

    • 最新动态
    • 开发者你好
    • 平台

    探索“平台”

    • Apple 平台
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    • App Store

    精选

    • 设计
    • 分发
    • 游戏
    • 配件
    • 网页
    • Home
    • CarPlay 车载
    • 技术

    探索“技术”

    • 概览
    • Xcode
    • Swift
    • SwiftUI

    精选

    • 辅助功能
    • App Intents
    • Apple 智能
    • 游戏
    • 机器学习与 AI
    • 安全性
    • Xcode Cloud
    • 社区

    探索“社区”

    • 概览
    • “与 Apple 会面交流”活动
    • 社区主导的活动
    • 开发者论坛
    • 开源

    精选

    • WWDC
    • Swift Student Challenge
    • 开发者故事
    • App Store 大奖
    • Apple 设计大奖
    • Apple Developer Centers
    • 文档

    探索“文档”

    • 文档库
    • 技术概述
    • 示例代码
    • 《人机界面指南》
    • 视频

    发布说明

    • 精选更新
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • Apple tvOS
    • Xcode
    • 下载

    探索“下载”

    • 所有下载
    • 操作系统
    • 应用程序
    • 设计资源

    精选

    • Xcode
    • TestFlight
    • 字体
    • SF Symbols
    • Icon Composer
    • 支持

    探索“支持”

    • 概览
    • 帮助指南
    • 开发者论坛
    • “反馈助理”
    • 联系我们

    精选

    • 《开发者账户帮助》
    • 《App 审核指南》
    • 《App Store Connect 帮助》
    • 即将实行的要求
    • 协议和准则
    • 系统状态
  • 快速链接

    • 活动
    • 新闻
    • 论坛
    • 示例代码
    • 视频
 

视频

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

更多视频

  • 简介
  • 概要
  • 代码
  • “钱包”的新功能

    了解 Apple 钱包凭证方面的最新设计更新和开发者工具。为你的凭证换上精美的新外观,充分展现丰富又生动的设计。探索新增的条形码格式和灵活的凭证操作 API。了解 Pass Designer 和 Pass Builder,看看这两款强大的新工具如何帮你化繁为简,轻松进行大规模的凭证设计、个性化定制及分发。

    章节

    • 0:01 - Introduction
    • 0:40 - Poster Generic
    • 2:36 - Barcodes
    • 4:27 - Featured actions
    • 5:46 - Developer tools
    • 5:47 - Pass Designer
    • 10:40 - Pass Builder
    • 13:50 - Personalizing a pass template
    • 15:01 - Next steps

    资源

    • Pass Builder
    • Wallet
      • 高清视频
      • 标清视频

    相关视频

    WWDC25

    • “钱包”的新功能
    • 探索 Swift 和 Java 互操作性

    WWDC24

    • “钱包”和 Apple Pay 的新功能
  • 搜索此视频…
    • 1:41 - Adopting Poster Generic

      // Adopting Poster Generic
      "posterGeneric": {
        "headerFields": [
          {
            "key": "memberID",
            "label": "Guest No.",
            "value": "102035"
          }
        ],
        "footerFields": [
          {
            "key": "membershipType",
            "value": "Family Pass"
          }
        ]
      }
    • 2:11 - Adopting Poster Generic with Generic fallback

      // Adopting Poster Generic and supporting Generic on iOS 26 and earlier
      "posterGeneric": {
        "headerFields": [
          {
            "key": "memberID",
            "label": "Guest No.",
            "value": "102035"
          }
        ],
        "footerFields": [
          {
            "key": "membershipType",
            "value": "Family Pass"
          }
        ]
      },
      "generic": {
        "headerFields": [
          {
            "key": "memberID",
            "label": "Guest No.",
            "value": "102035"
          }
        ],
        "footerFields": [
          {
            "key": "membershipType",
            "value": "Family Pass"
          }
        ]
      }
    • 2:52 - Barcodes: Add new types for iOS 27

      // Adopting new barcode types
      "barcodes": [
        {
          "format": "PKBarcodeFormatCodabar"
          "message": "…"
          "messageEncoding": "…"
        }
      ]
    • 3:37 - Barcodes: Supporting iOS 26 and earlier

      // Adopting new barcode types and supporting iOS 26 and earlier.
      "barcodes": [
        {
          "format": "PKBarcodeFormatCodabar"
          "message": "123456789"
          "messageEncoding": "iso-8859-1"
        },
        {
          "format": "PKBarcodeFormatQR"
          "message": "123456789"
          "messageEncoding": "iso-8859-1"
        }
      ]
    • 4:48 - Featured actions

      // Featured actions
      "featuredActions": [
        {
          "identifier": "my-offer-id",
          "type": "membershipBenefits",
          "url": "www.example.com/offers"
        }
      ]
    • 10:56 - Package.swift

      // Package.swift
      
      import PackageDescription
      
      let package = Package(
          name: "MyServer",
          products: [
                .library(
                    name: "MyServer",
                    targets: ["MyServer"]
              ),
          ],
          dependencies: [
              .package(path: "./path/to/PassBuilder")
          ],
          targets: [
              .target(
                  name: "MyServer",
                  dependencies: [
                      .product(name: "PassBuilder", package: "PassBuilder")
                  ]
              ),
              …
          ]
    • 11:05 - CreatePass.swift

      // CreatePass.swift
      
      import PassBuilder
      
      func createPass(for doggo: MemeberModel) async throws -> URL {
          var package = PassPackage(url: "template.pkpasstemplate")
          
          package.pass.fields.setValue(doggo.name, forKey: "DOG_NAME")
          package.pass.fields.setValue(doggo.favoriteToy, forKey: "LOVES")
          package.pass.fields.setValue(doggo.id, forKey: "MEMBER_ID")
        
          package.background = PassImage(url: doggo.photoURL)
        
          package.pass.barcodes = [
              Pass.Barcode(message: doggo.id, format: .pdf417)
          ]
        
          package.featuredActions = [
              Pass.Action(id: "action-1", type: "viewMembership", url: doggo.membershipURL) 
          ]
          …
      }
    • 13:11 - CreatePass.swift

      // CreatePass.swift
      
      import PassBuilder
      
      func createPass(for doggo: MemeberModel) async throws -> URL {
          var package = PassPackage(url: "template.pkpasstemplate")
          
          package.pass.fields.setValue(doggo.name, forKey: "DOG_NAME")
          package.pass.fields.setValue(doggo.favoriteToy, forKey: "LOVES")
          package.pass.fields.setValue(doggo.id, forKey: "MEMBER_ID")
        
          package.background = PassImage(url: doggo.photoURL)
        
          package.pass.barcodes = [
              Pass.Barcode(message: doggo.id, format: .pdf417)
          ]
        
          package.featuredActions = [
              Pass.Action(id: "action-1", type: "viewMembership", url: doggo.membershipURL) 
          ]
      
          let passCertificate = try PassCertificate(url: "pass.p12", password: "s3cr3t")
          let wwdrCertificate = try PassCertificate(url: "wwdr.cer")
        
          let signer = PassSigner(
              passCertificate: passCertificate,
              wwdrCertifiate: wwdrCertificate
          )
        
          let destinationURL = URL(string: "/www/passes/" + doggo.id)
          try signer.signPass(package, writingTo: destinationURL)
        
          return destinationURL
      }
    • 0:01 - Introduction
    • Since their introduction, Wallet passes have become an essential part of how people move through their day. From picking up a morning coffee — to tapping through transit gates — to checking in and boarding a flight — all without ever handing over a physical card. Passes help people move through the world faster, more privately, and more securely.

    • 0:40 - Poster Generic
    • In iOS 27, Wallet is introducing a brand new pass style called Poster Generic. The pass face consists of a background image, a primary logo, header fields, primary fields, a footer field, and a barcode (if provided). On iOS 26 and earlier, include the Generic pass style in your `pass.json` for backwards compatibility.

    • 2:36 - Barcodes
    • In iOS 27, Wallet passes support four new barcode types: EAN-13, Code 39, Codabar, and Interleaved 2 of 5 (ITF). These are specified using the existing `Barcode` object and `barcodes` array in your `pass.json`. On iOS 26 and earlier, provide support barcode type, such as a QR code.

    • 4:27 - Featured actions
    • In iOS 27, Wallet passes can provide actions for all pass styles, called featured actions. In the top-level of your `pass.json`, define the `featuredActions` key, which takes an array of `Action` objects. Each action is defined as a unique ID, the action type, and a value, such as a URL. Each pass can contain up to 2 featured actions, in priority order.

    • 5:46 - Developer tools
    • We're introducing a brand new suite of developer tools for Mac and server platforms, making it easier than ever to design, personalize, and build great passes with Pass Designer and Pass Builder.

    • 5:47 - Pass Designer
    • Pass Designer is a WYSIWYG editor, giving you a true-to-iOS rendering of your pass as you build it.

    • 10:40 - Pass Builder
    • Pass Builder takes the pass templates created in Pass Designer, and allows you to personalize, sign and validate your passes. Pass Builder can also be used from other programming languages.

    • 13:50 - Personalizing a pass template
    • The swift-java project can generate native Java bindings for the Swift API, allowing you to invoke Pass Builder from the Java runtime. We're also making protobuf definitions of the Pass Package format available, allowing you to generate type-safe models in your preferred programming language. You can then generate a customization message, and invoke the `buildpass` command line executable to personalize and sign your pass.

    • 15:01 - Next steps
    • Check out Pass Designer. Use Pass Designer to experiment with the new Poster Generic style — and check if it's the right fit for your pass. If you plan on adopting any of the new barcode types, make a plan for providing graceful fallbacks. And take a moment to identify the most meaningful and relevant actions for your customers, then bring them to life with featured actions.

Developer Footer

  • 视频
  • WWDC26
  • “钱包”的新功能
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • Apple 智能
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • Mini Apps Partner 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。
    版权所有 © 2026 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则