大多数浏览器和
Developer App 均支持流媒体播放。
-
“钱包”和 Apple Pay 的新功能
了解“钱包”和 Apple Pay 的最新更新。学习如何使用预授权付款、资金转移和 Apple Pay Later 营销,在你的 App 或网页上打造出色的 Apple Pay 体验。探索“钱包”的“订单追踪”对“邮件”、“信息”、Safari 浏览器和第三方应用的改进支持,并了解如何向订单的交易或收据中添加更多信息。此外,我们还将为你介绍 iPhone 上的 Tap to Present ID,这是一种使用 iPhone 在“钱包”中接收证件的全新方式,而且无需额外的硬件。
资源
- Adopting the Verifier API in your iPhone app
- Checking IDs with the Verifier API
- Generating reader tokens for the Verifier API
相关视频
Tech Talks
WWDC22
-
下载
♪ ♪
David:大家好 欢迎收看 “钱包和 Apple Pay 的新功能” 我是 David Jon:我是 Jon David:今天 我们将详细介绍 今年针对 钱包和 Apple Pay 体验推出的 所有更新以及新功能 钱包和 Apple Pay 涵盖了广泛的特性和功能 包括电子票券、交通卡、车钥匙等 所有这些都是 我们生态系统的重要组成部分 但今天我们将重点关注三个领域: 付款、订单追踪以及身份验证 让我们先从付款开始
首先 我们将介绍 Apple Pay Later 以及开发者应如何 在自己的平台上整合其销售支持 然后 我们将介绍一些 关于预授权付款的增强功能 并介绍一个全新的 API 用于支持使用 Apple Pay 进行资金转移 Apple Pay Later 是今年早些时候 针对美国用户推出的功能 它让顾客可以将购买款项 分成四笔独立的付款 顾客可以在钱包中轻松跟踪 和管理自己的付款 虽然 Apple Pay Later 不需要任何集成 但我们引入了一个新的 API 可以为开发者的 UI 提供专门的商品销售视图 该视图可以表示你的产品 支持 Apple Pay Later 并为顾客提供所需的详细信息 开发者可以自定义视图的样式 以更好地适应其显示环境 当用户选择此视图 以进一步了解信息时 开发者可以选择如何解释 Apple Pay Later 的功能 而且 App 和 Web 开发人员 都可以使用这个视图
商品销售视图可以根据环境不同 以四种视图风格呈现:
标准样式 它可以简要说明 顾客可以使用 Apple Pay Later 进行分期付款; 图标样式 用简洁明了的方式表示支持该功能; 结账样式 用于与其他支付选项 一起展示在结账流程中; 最后是价格样式 用来与总购买价格一起使用 当用户与此视图进行交互时 将会从中获得更多信息 作为商家 你可以 在两种不同的操作之间进行选择 “Learn More”操作将显示 关于 Apple Pay Later 的概述 并描述顾客选择它作为付款方式后 会有哪些体验 “Calculator”操作同样会提供 关于 Apple Pay Later 的解释 但会重点强调 顾客需要遵循的付款计划 让我们来看看开发者应如何 将这个视图集成到你的 App 中
首先 开发者需要检查 用户是否有资格 使用 Apple Pay Later 你可以使用 PKPayLaterUtilities 中的 验证函数来完成此操作 开发者需要提供 交易金额 以及所需的区域设置 一旦确定用户是否有资格 使用 Apple Pay Later 你需要实例化一个 PKPayLaterView 并提供相同的信息 进行资格验证 如果你想要选择不同的 视图样式和操作 可以通过更改 它们各自的属性来实现 我们还提供了一个 方便的 SwiftUI 视图 让开发者可以在 SwiftUI App 中 表明自己支持 Apple Pay Later 你可以通过实例化 PayLaterView 来使用它 并为其提供与之前相同的信息 若要自定义视图样式和操作 你可以使用 相应的视图修饰符来实现 就是这么简单 如果你想在网站上使用该销售视图 首先需要完成几个设置步骤
用于显示视图的 API 已经包含在现有的 Apple Pay JavaScript SDK 中 但是在包含它时 你可能需要设置一些新属性 如果你需要 支持 Cross Origin Resource 共享请求 请务必设置 crossorigin 属性 使用 async 属性 以确保脚本的 加载和执行独立于 你的页面的加载进度 最后 请求 API 需要 进行身份验证的 JWT 该令牌可以在 Apple Developer 门户上生成 使用 JavaScript SDK 非常简单 使用 apple-pay-merchandising 元素来表示视图 金额、国家代码、货币代码 和区域设置是必填字段 就像原生 API 一样 你还可以根据需要 自定义视图的其他方面 如果你要包含 Apple Pay Later 销售视图 我们有一些推荐的操作方式 对于 App 需要有权限才能使用此视图 开发者可以在 Apple Developer 门户上获取该权限 对于网站 请记得注册你的域名 并获取用于包含 SDK 的 JWT 这同样可以在 Apple Developer 门户上完成 如果可以的话 请尽量将 SDK 导入到 head 元素中 这将使其尽快运行 以便当页面完全加载时 销售视图已经准备就绪 视图的大小可以 根据你的需求进行调整 但要确保遵循尺寸要求 最后 如果开发者的网站 有限制性的内容安全策略 请在推荐的指导下操作 以确保 SDK 可以跨域加载 以上就是 对 Apple Pay Later 的介绍 接下来 我们来谈谈预授权付款 在 iOS 16 中 我们引入了预授权付款功能 用户可以在钱包中查看 和管理他们预先授权的付款 商家可以按照约定的条件 向用户收取费用 从前 我们只支持定期付款 和自动充值付款 现在我们还支持延期付款 现在这三种预授权付款类型 都可以在 App 以及网络上使用 延期付款允许开发者在将来的 指定日期收取固定或可变金额 如果你有免费取消的截止日期 你也可以将其作为请求的一部分 延期付款适用的场合可能包括 顾客预定酒店房间 或者预定商品
预授权付款使用 Apple Pay 商家令牌
它与用户的 Apple ID 绑定 而不是与单个设备绑定 这意味着 即使用户升级了他们的设备 令牌仍然可以使用 因此商家仍然可以 使用令牌收取账户的付款 从而使以后的收款更有保障 在执行预授权支付时 如果客户的付款卡支持商家令牌 商家令牌将自动发放 如果付款卡不支持商家令牌 交易仍将进行 但将使用与单个设备绑定的 传统 Apple Pay 令牌 要进一步了解有关 Apple Pay 商家令牌的信息 请查看去年的 “钱包和 Apple Pay 的新功能” 让我们来看看 开发者要如何在 App 中 使用延期付款 首先 我们创建一个 PKDeferredPaymentSummaryItem 其中包含了费用的描述 和将要扣除的金额 你还可以设置何时进行扣款 接下来 我们创建一个 PKDeferredPaymentRequest 我们向其提供刚刚创建的摘要项 以及有关付款管理的其他信息 如果我们需要向用户显示账单协议 也可以在 deferredPaymentRequest 中设置 一旦我们创建并配置好请求 我们就可以将其附加到 PKPaymentRequest 上 对于我们请求中的付款摘要项 我们再次创建一个 具有相同金额和日期的 PKDeferredPaymentSummaryItem 但这次要使用带有公司名的标签 我们将其设置到请求中 这样就准备好进行付款了
如本例所示 Apple Pay 的付款表单将向用户提供 有关延期付款的信息 包括账单协议和预计扣款时间 现在 如果你指定了免费取消日期 则需要考虑一些重要事项
当你提供免费取消日期时 即表示你声明在该时间点 之前的任何时间取消 都将不收取任何费用 正因为如此 日期和时间 都是重要的信息 你需要明确声明 适用于取消政策的时区 我们提供了一个单独的属性 来支持此功能 在下面的示例中 我们将时区指定为 太平洋标准时间 这一点很重要 因为客户所在的时区 可能会与取消政策的 时区不同 比如说 客户可能会在英国 预定美国的酒店 在处理延期付款时 请遵循以下推荐的操作方式
如前所述 如果你需要表述免费取消政策 请仔细检查提供给延期付款请求的 日期、时间和时区 请记得在你的摘要项目中 包含延期付款 并确保设置适当的商户名称 这一操作并不会自动完成 在提供支付协议时 请将其保持简洁 支付协议文本 只应作为关键事实摘要 并不应取代任何正常的 账单或法律协议 最后 请指定一个令牌通知 URL 以便你在 Apple Pay 商户令牌发出时 及时获得其 生命周期事件的更新 以上就是关于延期付款的介绍 接下来 让我们来看看使用 Apple Pay 进行资金转账的全新方式 传统上在 Apple Pay 中 用户始终可以通过 付款表单向账户中添加资金 在 iOS 17 中 我们在 Apple Pay 引入了 Transfer Funds 功能
这使用户可以 从账户中向钱包中的 一张卡转账 完成资金流动的生命周期 此功能采用与付款相同安全 且私密的 Apple Pay 基础架构 这意味着用户将非常熟悉该流程 Transfer Funds 可以适用于 顾客从银行账户 或储值账户中提取资金 为了支持 Apple Pay 的 Transfer Funds 我们创建了一种全新的请求类型 主要用来 设置转账所需的信息 要使用它 开发者只需定义 要转账到用户的支付卡的金额即可 如果你需要收款方的联系方式 也可以请求这些信息 如果开发者之前使用过 PKPaymentRequest 这个新的 API 会让你觉得很熟悉 由于 Apple Pay 的 Transfer Funds 使用 与付款相同的基础架构 你需要在 Apple Developer 门户中注册为商户 要进一步了解如何注册为商户 并进行 Apple Pay 的设置 请查看“实现 Apple Pay 和订单跟踪”讲座 为了更好地解释如何使用 Apple Pay 进行 Transfer Funds 让我们来举个例子 假设你有一个叫 Andrew 的用户 希望从其账户中提取款项 在 Apple Pay 中 使用 Transfer Funds 后 这位用户会在你的 App 中 发起一笔转账 你的 App 随后创建一个请求 详细说明要转账的金额 接着 Andrew 将会看到 Apple Pay 表单 上面详细显示了转账信息 并选择用来接收资金的卡 一旦 Andrew 安全地 进行了转账验证 一个加密的有效负载就会生成 并返回给你的 App 准备好与你的支付提供商一起处理 一旦转账处理完成 你的 App 将把结果 返回给 Apple Pay 如果成功了 那么转账到此结束 如果发生错误 Andrew 将收到通知 并可能采取纠正措施来解决问题 现在我们已经知道了 资金转账的工作原理 我们来看看开发者 要如何在 App 中实现它 首先 我们需要确定 我们希望支持的网络和卡片功能 接下来 我们将检查 用户是否有符合条件的卡 来发起资金转账 这是通过 PKPaymentAuthorizationController 完成的 使用 supportsDisbursements 方法 我们提供之前定义的 网络和卡片功能 开发者可以使用此检查的结果 来适当地调整用户界面 现在检查过了资格 我们可以开始构建我们的转账请求 与付款请求类似 金额是通过汇总项目来定义的 在这种情况下 我们创建了两个不同的汇总项目 第一个是 PKPaymentSummaryItem 代表从用户账户中提取的金额 要注意的是 与该项目相关联的标签 应该是你的公司名称 第二个是一种新类型的汇总项目 即 PKDisbursementSummaryItem 开发者必须包含这样一个项目 并且它应该始终表示 收款人的支付卡上收到的最终金额 减去任何费用、收费或调整 付款方面 我们有 PKPaymentRequest 而对于使用 Apple Pay Transfer Funds 我们有一个新的请求类型 PKDisbursementRequest 为了构建 PKDisbursementRequest 开发者需要指定一些详细信息 它需要你在注册 Apple Pay 时设置的 商户标识符、交易的货币、 你的公司所在地区 以及之前定义的 网络和功能 开发者还需要提供 刚刚创建的摘要项目 如果你需要收款方的联系方式 也可以在此处请求 你还可以限制收款方银行卡的 签发地区 一旦请求构建完成 我们就可以向用户呈现它 我们通过使用我们的转账请求初始化 PKPaymentAuthorizationController 实例 来完成这个过程 我们将自己设置为代理 然后进行呈现 如下所示 用户可以选择 用来接收转账的卡 以及将收到的金额 现在 用户一旦 安全授权了这笔转账 我们就需要实现一些委托回调 来处理转账 处理使用 Apple Pay 进行 Transfer Funds 需要实现的委托方法只有两个 第一个是 paymentAuthorizationControllerDidFinish 此方法将会在 当表单准备好关闭时调用 调用的 App 将负责关闭它 开发者还可以使用此方法 相应地更改 App 的 UI 第二个是 didAuthorizePayment 委托方法 由于 Apple Pay Transfer Funds 使用与付款相同的基础架构 开发者将接收到同样类型的 PKPayment 对象进行处理 在这里 我们已经 将令牌的处理抽象成了 我们自己的 processFundsTransfer 方法 根据处理的结果 开发者将返回成功或者失败的结果
如果开发者 在处理阶段遇到错误 我们提供了一组 方便的方法来表示这些错误 开发者可以使用 disbursementContactInvalidError 来处理与所提供的 联系信息有关的问题 如果你的支付处理器 确定用户的付款卡 无法接受资金转账 你可以使用 disbursementCardUnsupportedError 一些金融机构支持即时资金转账 可以更快地将资金发送至收款方 这也可以用 Apple Pay Transfer Funds 来表示 根据服务的不同 这些即时转账有时 可能会收取费用 这也可以表示出来 通常 用户可以在 App 中 选择到账时间 当用户选择即时转账时 开发者应提供支持所需的功能 当这样做时 用户可以选择的卡将仅限于 可以支持即时转账的卡
这是一个即时转账的视图
这张表单看起来与之前非常相似 但现在我们会突出显示 该转账是即时完成的 并列出用户可能支付的任何费用 转账金额 也会根据额外费用进行调整 让我们看看如何使之前的转账请求 变为即时转账 首先 我们将 instantFundsOut 添加到我们支持的功能列表中 然后 我们可以在 supportsDisbursements 中 检查用户是否有支持即时转账的卡 然后 开发者可以相应地调整 转账方法选项和 UI 至于摘要项目 我们有一个专用项目 来表示即时转账费用 即 PKInstantFundsOutFeeSummaryItem 通过该项目 开发者可以指定用于 即时转账的收费金额 即使你不收取费用 这个摘要项目仍然是必需的 在这种情况下 你只需要将金额设为 0 因为在这个示例中 我们会收取费用 所以我们需要相应地更新支出金额 这一步骤不会自动完成 创建 PKDisbursementRequest 和从前没有太大的区别 唯一的区别是开发者应确保 提供之前定义的功能和摘要项目 以上就是表示及时转账的全部内容 以下是实施 Apple Pay Transfer Funds 时的 一些推荐做法
请注意 Apple Pay 的 Transfer Funds 功能仅适用于 iOS 和 iPadOS 无法在 macOS 或网页上使用 如果在资金转账过程中发生错误 开发者应使用专用的支付错误视图 来有效地向用户传达此信息 要注意第一个摘要项应表示 将从用户账户中提取的金额 第一个摘要项的标签 应与你的公司名相匹配 而最后一个摘要项 必须表示用户将收到的 减去任何费用和调整的最终金额 以上就是今天关于付款的全部内容 稍微转换一下话题 我们来谈谈订单追踪 我们在 iOS 16 中 引入了订单追踪 以帮助用户跟踪关联的商家的订单 自推出以来 用户的反馈非常好 我们也一直在努力改进 订单追踪功能 我将介绍我们如何改进 操作系统内的整合 以更好地呈现和传递订单信息 然后 我将介绍一些 我们对订单追踪进行的增强 最后 我还会介绍 将订单添加至钱包的新方法 在 iOS 16.4 中 我们推出了通过信息 分享订单的功能 提供了订单字间预览 并使收货人能够在钱包中 跟踪订单 我们还引入了订单追踪小组件 使用户可以一目了然地跟踪订单 用户无需做任何事就可以 享受这些新功能 在 iOS 17 中 我们将继续进行系统整合 并加入了 Apple 地图的支持 如果用户正在查询带有 指定取货时间和位置的订单 Apple 地图将通过 Siri 建议 主动提供此信息 现在我们来看一下 我们在 iOS 17 中对 对订单追踪做的一些增强 为了更好地支持快递 和外卖配送使用场景 开发者现在可以选择配送的状态 通过新的 shippingType 属性 现在订单可以显示为 已发货或者已配送
现在我们对关联 App 提供了更好的支持 其中包括企业 App 通过声明 associatedApplicationIdentifiers 开发者可以改善 你的 App 与订单追踪 之间的订单通知管理 此外 我们支持 customProductPageIdentifiers 可以为钱包流量提供 与你的 App Store 产品页面 最相关的深层链接 最后 我们引入了新的方式 来表示付款信息 订单包现在支持 与之相关的一系列交易 每个交易都会有自己的详细信息 如付款方式和金额 开发者还可以附加交易的收据文件 以便你的客户保留付款记录 收据文件可以是 PDF 格式 也可以是 JPEG 或 PNG 等图像格式 但要记住 订单包的大小有限 所以要考虑包含的收据文件的大小 现在开发者还可以描述 一笔交易是用于购买 还是退款 随着 iOS 17 的推出 将订单 添加到钱包中变得更加简单 开发者现在可以将订单包 附加到电子邮件中 例如订单确认邮件 用户便可以 立即将订单添加到钱包中 此外 开发者还可以在 App 和网站中添加一个 “使用钱包跟踪”按钮 我们来看一下新的订单追踪API 它可以将订单加入钱包 该 API 包含在两个新的框架中 即 FinanceKit 和 FinanceKitUI 这两个专门为 Swift 开发的框架 将允许开发者 在钱包内处理订单数据 通过共享的 FinanceStore 实例 可以访问订单信息 为处理订单追踪查询 提供了一个中心资源 有了这个 API 开发者 可以检查订单是否存在 以及添加或者更新订单 让我们来看看如何检查 已经存在的订单 首先 开发者需要查询 FinanceStore 检查是否存在 带有 FullyQualifiedOrderIdentifier 的订单 然后 开发者将收到两种回复之一 即存在该订单或未找到该订单 接着开发者可以根据需要 在 App 中作出相应的回复 就这么简单 如果开发者想添加或更新订单 有两种方法可供选择 首先 我们学习如何使用 FinanceKit 进行操作 我们首先要将 想要添加到钱包的签名订单包 进行数据序列化 然后将其提供给 FinanceStore.saveOrder 方法 这样做之后 用户会看到一个视图 用于验证订单的内容以及询问 是否希望在钱包中进行跟踪 一旦用户确认或拒绝请求 开发者将异步收到结果 并且结果可以有三种形式 要么用户将订单添加到钱包 要么用户拒绝了请求 或者已经存在一个更新的订单 如果你的 App 是用 SwiftUI 编写的 你可以使用 FinanceKitUI 它提供了一个专门的 “使用 Apple 钱包跟踪”按钮 并允许你处理添加订单的结果 与 FinanceKit 类似 你首先需要一个序列化的 签名订单包实例 然后 在你的视图中包含 AddOrderToWalletButton 当用户点击此按钮时 可以选择是否将订单添加至钱包中 然后 你可以像之前一样 对三种结果进行操作 对于想让客户在网页上 追踪订单的商家 我们在 JavaScript SDK 中提供了 该按钮的一个版本 要使用它 你需要 插入一个 apple-wallet-button 并使用属性对其进行配置 按钮的类型 应设置为 track-order 在使用此按钮时 一定要将 onClick 回调 设置为指向 你希望添加的已签署订单包的位置 这就是今天关于订单追踪的内容 我们非常希望开发者能马上在 App 和服务中采用这些新 API 接下来我们将 带来一些完全不同的东西 我们有一些关于身份验证的 令人兴奋的更新要分享 那么接下来交给 Jon Jon:谢谢 David 大家好 我是 Jon 我是 Apple Pay 和钱包团队的工程师 很高兴能介绍我们在 iOS 17 中 为身份验证增加的新功能 我们在 iOS 15.4 中 引入了钱包中的证件功能 允许受支持的美国州用户可以将驾照 或其州证件添加至钱包 去年 我们推出了 Verify with Wallet 通过这个 API 企业可以通过请求 存储在 Apple 钱包中的用户证件 来简化其账户验证流程 今年 在 iOS 17 中 我们为 iPhone 引入了 Tap to Present ID
借助这个 API 开发者 只需要用自己的 iPhone 即可 无缝、安全地验证用户钱包中的 证件和其他电子驾照 这是在 iOS 15.4 中我们 为 ProximityReader 框架增加的 Tap to Pay on iPhone API 基础上进行的扩展 Tap to Pay on iPhone 提供了 一种安全、私密且便捷的方式 来接受非接触式支付 无需额外的 硬件或支付终端 接下来 让我们看看 Tap to Present ID 的实际效果 假设我在 Spaceship Rentals 工作 而 David 想从我们这里 租一艘太空飞船 他需要至少年满 21 岁 才可以办理租赁手续 因此我将使用 Tap to Present ID 功能来进行年龄验证 首先 我在 Spaceship Rentals App 上 调用 Tap to Present ID 功能
我的 iPhone 上会显示 我们公司的名称、商标以及请求的 验证类型 本例中是年龄验证 接下来我要请 David 将他的 iPhone 靠近我的 iPhone David:我的 iPhone 现在提供了 一个同意表单供我查阅 上面写着我将要向 Spaceship Rentals 提供我的证件 它将要查看我的证件照片 以及我是否年满 21 岁 我愿意提供这些信息 那么我连按两下侧边按钮 进行面容 ID 验证 Jon:现在我的 iPhone 上 显示了 David 提供的信息 我可以看到他的证件照片是他本人 以及他年满 21 岁 所以他现在已经准备好起飞了
我刚刚使用 Tap to Present ID API 成功验证了 David 的证件 与查看实体证件相比 这种方式具有一些关键优势
首先 证件信息本身保证真实 与可以伪造的实体证件不同 电子驾照由签发机构 进行了加密签名 并由 iOS 验证该签名 因此商家可以信任验证结果 其次 这种验证方式无线而安全 David 根本不需要 把他的 iPhone 交给我 甚至都不需要解锁它 所有数据都可以通过 NFC 和蓝牙安全传输 最后 这种验证方式更保护隐私 David 只需要提供 年龄验证所需的信息 而不需要提供实体证件 从而暴露他所有个人信息 让我们来谈谈开发者可以通过 这个 API 执行的请求类型 我们刚刚演示了展示请求 这种请求非常适用于 验证一个人的姓名或年龄 该请求会将结果显示在系统 UI 上 并且不会将证件信息 返回给开发者的 App 该 API 还支持数据请求 它可以请求更广泛的 文档元素 如地址、出生日期 驾驶权限等 并将结果返回给开发者的 App 进行处理 要执行数据请求 开发者的 App 需要 额外的授权 要获取更多信息 请查阅文档
现在 让我们看看 如何在代码中实现这个功能 从展示请求开始
首先 使用 MobileDocumentReader 的 isSupported 类属性 来检查当前设备是否支持此 API 若支持 实例化一个 reader 对象 并调用它的 prepare 方法 这将返回一个 MobileDocumentReaderSession 对象 接下来 创建一个带有你想要 验证的元素的驾照展示请求 这里 我正在验证驾照持有人 是否满 21 岁 然后 在会话上调用 requestDocument 传入请求 接着你的设备会显示读取 UI 它会先提示证件持有者 出示他们的设备 接着展示请求的结果
请记住 由于这是一个展示请求 requestDocument 方法 不会返回任何内容 只需几行代码 你就可以在为你的 App 添加移动文档阅读功能 默认情况下 你的公司名和商标 不会显示在读取者的 iPhone 或证件持有者的设备上 然而 如果你希望在文档请求期间 显示你的品牌信息 这也可以办到 开发者可以通过 Apple Business Register 进行配置 并且只需几行代码就可实现 要想在进行文档请求时 展示你的品牌信息 开发者需要在准备设备时 传入一个读取器令牌 你需要在你的服务器上创建此令牌 读取器令牌是一个 JWT 通过 Apple Business Register 配置的密钥 对其进行了签名 你的服务器将使用你的品牌 ID、 密钥 ID 和读取器实例标识符 来创建读取器令牌 品牌和密钥 ID 可以通过 Apple Business Register 获取 并且它们在你的 App 的 所有实例中是相同的 你的 App 将向服务器 提供读取器实例标识符 回到代码中 开发者的 App 将从 MobileDocumentReader 的 配置对象中获取读取器实例标识符 并将其发送到服务器 以换取读取器令牌 然后将此令牌传递给 prepare 方法 以获取读取器会话 然后创建一个请求 并像之前一样 调用 requestDocument 方法 现在 你的公司名和商标 将同时显示在 读取者和证件持有者的 iPhone 上 以上就是展示请求的内容 目前为止 我们已经学习了 如何准备一个会话 请求一个文档 以及如何使用阅读器令牌 来显示你的品牌信息 现在让我们来看看 如何执行数据请求 这种请求支持更广泛的文档元素 并且 API 会将结果 返回给开发者的 App 而不仅仅是显示结果
要使用此请求类型 开发者首先需要像以前一样 准备带有读取器令牌的设备 然后创建驾照数据请求 指定要请求的文档元素 以及你是否打算保留该信息
调用 requestDocument 将显示读取 UI 就像展示请求一样 但读取一旦完成 该 UI 将自动关闭 然后结果会返回到你的 App 并准备处理 以上就是 iPhone 的 Tap to Present ID 这是我们在 ProximityReader 框架中 新增的一个令人兴奋的新 API 接下来让 David 为我们总结一下 David:谢谢你 Jon! 那么今天我们学到了什么呢? 我们首先了解了付款的改进 Apple Pay Later 的支持 和新的使用场景 订单追踪的新 API 允许开发者 从 App 和服务内部 将订单添加到钱包 我们还介绍了 iPhone 的 Tap to Present ID 这种验证驾照的新方式 最后 如果你是一家企业 请考虑加入 Apple Business Register 这样可以让你的客户有更好的 钱包和 Apple Pay 体验 开发者可以访问 Apple 开发者论坛 你可以全年都在这提问并获得帮助 最后 如果你有任何反馈 我们非常乐意听取你的意见 你可以使用反馈助理来进行反馈 那么本视频就到这里 希望你喜欢本节的内容 两人:感谢你的收看! ♪ ♪
-
-
28:51 - Performing a display request to verify age
import ProximityReader // Check the current device supports mobile document reading. guard MobileDocumentReader.isSupported else { return } let reader = MobileDocumentReader() let readerSession: MobileDocumentReaderSession = try await reader.prepare() let request = MobileDriversLicenseDisplayRequest(elements: [.ageAtLeast(21)]) try await readerSession.requestDocument(request)
-
30:55 - Displaying brand information during a document request
let reader = MobileDocumentReader() let identifier = try await reader.configuration.readerInstanceIdentifier let readerToken = try await WebService().fetchToken(for: identifier) let readerSession = try await reader.prepare(using: .init(readerToken)) let request = MobileDriversLicenseDisplayRequest(elements: [.ageAtLeast(21)]) try await readerSession.requestDocument(request)
-
31:50 - Performing a data request
let session: MobileDocumentReaderSession = /* ... */ var request = MobileDriversLicenseDataRequest() request.retainedElements = [.givenName, .familyName, .dateOfBirth, .portrait] request.nonRetainedElements = [.address, .documentExpirationDate, .drivingPrivileges] let response = try await session.requestDocument(request) // Process document elements from document response. self.processResponse(response.documentElements)
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。