Ionic 4将票证/ QRImage添加到Apple Wallet

时间:2019-06-20 11:26:46

标签: ionic-framework ionic4 ionic-native

购票后,我正在生成QR码。我想将这些QR码存储到Apple Wallet。

我使用过ionic-native apple-wallet plugin,但是the documentation并未提供足够的信息来说明如何将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
 });

该文档可添加/删除卡,但没有有关向Apple Wallet添加QR的文档。

2 个答案:

答案 0 :(得分:1)

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

This link to apple dev docs将有助于获得对该过程的基本了解。 根据{{​​3}}的考虑,不要直接在应用中创建通行证。


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

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

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

  1. 您需要具有一个端点(您的API或第三方服务),该端点将返回生成并签名的.pkpass文件。不必专门返回文件,而是返回包含带有以下标头的包的响应:
Content-Type: application/vnd.apple.pkpass
Content-Disposition: attachment;filename=your_file_name.pkpass
  1. 在您的Ionic应用程序中安装this comment本机插件
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示例:In App Browser
constructor(private inAppBrowser: InAppBrowser) {
}

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

  this.inAppBrowser.create(url, '_system');
}

答案 1 :(得分:0)

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

文档顶部说,它适用于信用卡/借记卡:

  

此插件提供了将您的信用卡/借记卡添加到Apple Wallet的支持。它还可以检查电子钱包或任何配对设备中是否存在信用卡/借记卡,例如苹果手表

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

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

可以在此处查看IOS代码:

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

我已经进行了一些搜索,可以找到一些关于该主题的讨论,但是它们都是无处可寻的话题。