1

我在购票后生成二维码。我想将这些二维码存储到 Apple Wallet。

我使用了 ionic-native apple-wallet 插件,但文档没有提供有关如何在苹果钱包中存储 QR 图像的足够信息。

import { AppleWallet } from '@ionic-native/apple-wallet/ngx';

this.appleWallet.isAvailable()
 .then((res: boolean) => {
    Expect res to be boolean
  })
 .catch((err) => {
    Catch {{err}} here
 });

该文档允许添加/删除卡,但没有关于将 QR 添加到 Apple Wallet 的文档。

4

2 回答 2

3

您确实意识到,为了创建有效的 Apple Wallet Pass,您需要创建一个捆绑包,然后对其进行签名、压缩和分发?

这个指向苹果开发文档的链接将有助于获得对该过程的基本了解。根据此评论,有考虑不要直接在应用程序中创建通行证。


我们遇到了与您类似的问题 - 我们有用于销售交通票的 Ionic 应用程序,我们希望在 iOS 上添加将票添加到钱包的功能。我所做的所有研究似乎都表明目前(2019 年 12 月)无法完成。

虽然,您可以使用一种解决方法

它涉及在系统浏览器中从外部打开链接,因此可能会发现此解决方案不合适。

  1. 您需要有一个端点(您的 API 或第三方服务),它将返回生成并签名的 .pkpass 文件。它不必专门返回一个文件,而是一个包含带有此类标头的捆绑包的响应:
Content-Type: application/vnd.apple.pkpass
Content-Disposition: attachment;filename=your_file_name.pkpass
  1. 在您的 Ionic 应用程序中安装In App Browser原生插件
ionic cordova plugin add cordova-plugin-inappbrowser
npm install @ionic-native/in-app-browser
  1. 将其添加到您的 AppModule 提供程序
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';

@NgModule({
  ...
  providers: [
    ...
    InAppBrowser
  ],
})
export class AppModule {}
  1. 在组件注入InAppBrowser和调用方法create中,第二个参数(目标)为_system. 此命令将使用提供的 url 打开外部本机设备浏览器。如果端点配置正确,浏览器将自动开始下载,然后呈现给用户 UI 以将票证/通行证添加到钱包。这是一个很好的 UI 示例:链接到图像
constructor(private inAppBrowser: InAppBrowser) {
}

downloadApplePass(ticket) {
  const url = `https://your.api/endpoint/${ticket.id}`;

  this.inAppBrowser.create(url, '_system');
}
于 2019-12-23T16:14:03.310 回答
3

您所指的插件似乎不是为此目的而设计的。

该文档在顶部说它用于信用卡/借记卡:

此插件支持将您的信用卡/借记卡添加到 Apple Wallet。它还可以检查信用卡/借记卡是否存在于钱包或任何配对设备(例如 Apple Watch)中

查看 Apple Wallet 文档,它使用特定的类PKPaymentPass来管理卡片,而票证由不同的类处理:

查看您正在使用的本机插件的源代码向我表明,每次它使用 a 时都会将PKPass其强制转换为PKPaymentPass,因此它看起来不像是文档问题,只是不受支持。

IOS代码可以在这里查看:

不幸的是,除非您想自己编写代码,否则您似乎不走运。

我做了一些搜索,可以找到一些关于这个主题的讨论,但它们都是无处可去的线程。

于 2019-06-21T08:00:12.307 回答