Вы понимаете, что для создания действительного Apple Wallet Pass вам нужно создать пакет, затем подписать его, сжать и распространить?
Эта ссылка на документацию по разработке Apple поможет получить базовое представление о процессе. И в соответствии с этим комментарием есть соображения чтобы не создавать проходы прямо в приложении.
Мы столкнулись с проблемой, похожей на вашу - у нас есть приложение Ionic для продажи билетов на транспорт, и мы хотели добавить возможность на iOS добавлять билеты в кошелек. Все исследования, которые я провел, похоже, показывают, что в настоящее время (декабрь 2019 г.) это невозможно сделать.
Хотя есть обходной путь, который вы можете использовать
Это предполагает открытие ссылки извне в системном браузере, поэтому такое решение может показаться неподходящим.
- У вас должна быть конечная точка (ваш API или сторонняя служба), которая будет возвращать сгенерированный и подписанный файл .pkpass. Он не должен специально возвращать файл, а должен возвращать ответ, содержащий пакет с такими заголовками:
Content-Type: application/vnd.apple.pkpass
Content-Disposition: attachment;filename=your_file_name.pkpass
- В вашем приложении Ionic установите собственный плагин In App Browser.
ionic cordova plugin add cordova-plugin-inappbrowser
npm install @ionic-native/in-app-browser
- Добавьте его к своим поставщикам AppModule
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
@NgModule({
...
providers: [
...
InAppBrowser
],
})
export class AppModule {}
- В компонент введите
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