Редактировать файл Passbook Pass (.pkpass) во время выполнения?

Я знаю, как создать файл .pkpass с помощью инструментов на моем Mac, а затем заархивировать их и подписать (используя инструмент signpass), но как я могу редактировать файл во время выполнения в приложении для iOS?

Я понимаю, что в Apple документация, они хотят, чтобы вы использовали сервер для любых обновлений/редактирований, но это не то, к чему я стремлюсь (я понимаю проблемы с безопасностью, и что не является предметом этого вопроса).

Как я могу это сделать (я не прошу код)? В документации это единственное упоминание (которое я видел) о фактическом управлении проходами во время выполнения:

In a production environment, the signing and compressing would be part of the system that generates passes.

Любые идеи о том, как это можно сделать? Существуют ли какие-либо сторонние API, которые позволяют это сделать (я проверил Passdock и Passsource, но у Passdock нет API Obj-C, а Passource не слишком ясен).


person Sam Spencer    schedule 26.10.2012    source источник


Ответы (2)


Как вы уже сказали, Apple не хочет, чтобы вы создавали свои собственные файлы .pkpass в приложении ios. Это, безусловно, возможно сделать, Apple не может НЕ разрешить вам включать или получать сертификаты, хотя они, безусловно, могут отклонить ваше приложение, если захотят.

Вы можете адаптировать код из любого количества статей/учебников для создания различных файлов, создания подписи (вероятно, самой загадочной и сложной части) и создания файла .pkpass в вашем приложении. Некоторый код в приложении signpass, вероятно, можно повторно использовать как есть, если фреймворки, на которые он опирается, находятся в iPhone SDK.

Возможно, вы могли бы взглянуть на некоторые уже существующие сервисы, которые предлагают генерацию проходов с помощью высокоуровневого API, который можно использовать с телефона. Например, этот, который я представляю без каких-либо гарантий или одобрения.

person ohmi    schedule 26.10.2012
comment
Не могли бы вы предоставить официальное уведомление от Apple, подтверждающее ваше второе предложение? - person Ivan Marinov; 14.11.2012

Вы не сможете редактировать файл .pkpass, так как он подписан. Если вы измените его, подпись будет недействительной.

Единственное редактирование, которое вы можете сделать, это генерация перед pkpass. Если вы можете создавать файлы .pkpass во время выполнения, вы можете редактировать их до подписания. В противном случае, единственная другая возможность редактировать их после создания с помощью push-уведомлений, но это позволяет редактировать только определенные поля.

person WDUK    schedule 26.10.2012
comment
Технически вы МОЖЕТЕ редактировать подписанные пропуска, НО они должны быть переподписаны. Их даже можно подписать любым сертификатом (таким же, как и оригинальный, если у вас есть к нему доступ, или повторно подписать новым сертификатом, если вы являетесь торговым посредником и вам разрешено это делать). Как вы сказали, подпись будет недействительной, но вам просто нужно распаковать и заново подписать. Я сделал это успешно в python. Это также может быть сделано с помощью приложения. 1) распаковать (распаковать), 2) отредактировать, 3) обновить манифест, 4) повторно подписать, 5) раздуть (сжать). Так что это дополнительная опция только к другой опции. Однако подписание в приложении опасно. - person Pierre-Francoys Brousseau; 03.06.2015