Ionic 4 Добавление билета/QRImage в Apple Wallet

Я генерирую QR-коды после покупки билета. Я хочу сохранить эти QR-коды в Apple Wallet.

Я использовал плагин ionic-native apple-wallet, но документация не дает достаточно информации о том, как хранить QR-изображение в кошельке Apple.

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.


person Amit    schedule 20.06.2019    source источник


Ответы (2)


Плагин, на который вы ссылаетесь, похоже, не предназначен для этой цели.

В документации вверху написано, что это для кредитных/дебетовых карт:

Этот плагин обеспечивает поддержку добавления ваших кредитных/дебетовых карт в Apple Wallet. Он также может проверить, существует ли кредитная / дебетовая карта в кошельке или любом сопряженном устройстве, например. Apple Watch

Глядя на документацию Apple Wallet, он использует определенный класс PKPaymentPass для управления картами, тогда как билеты обрабатываются другими классами:

Глядя на исходный код собственного плагина, который вы используете, я вижу, что каждый раз, когда он использует PKPass, он преобразует его в PKPaymentPass, так что это не похоже на проблему с документацией, он просто не поддерживается.

Код IOS можно посмотреть здесь:

К сожалению, вам, похоже, не повезло, если вы не хотите писать код самостоятельно.

Я провел некоторый поиск и могу найти несколько небольших дискуссий по этой теме, но все они никуда не ведут.

person rtpHarry    schedule 21.06.2019

Вы понимаете, что для создания действительного Apple Wallet Pass вам нужно создать пакет, затем подписать его, сжать и распространить?

Эта ссылка на документацию по разработке Apple поможет получить базовое представление о процессе. И в соответствии с этим комментарием есть соображения чтобы не создавать проходы прямо в приложении.


Мы столкнулись с проблемой, похожей на вашу - у нас есть приложение Ionic для продажи билетов на транспорт, и мы хотели добавить возможность на iOS добавлять билеты в кошелек. Все исследования, которые я провел, похоже, показывают, что в настоящее время (декабрь 2019 г.) это невозможно сделать.

Хотя есть обходной путь, который вы можете использовать

Это предполагает открытие ссылки извне в системном браузере, поэтому такое решение может показаться неподходящим.

  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-адресом. Если конечная точка настроена правильно, браузер автоматически начнет загрузку, а затем представит пользователю пользовательский интерфейс для добавления билета/пропуска в кошелек. Вот хороший пример пользовательского интерфейса: Ссылка на изображение
constructor(private inAppBrowser: InAppBrowser) {
}

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

  this.inAppBrowser.create(url, '_system');
}
person vokilam    schedule 23.12.2019