Как поделиться пропусками через приложение на iPhone?

Предположим, у меня есть пропуск в моем приложении сберегательной книжки. И хотел поделиться пропуском с одним из моих друзей.

  • В моем приложении, если я отправляю данные .pkpass (полученные с сервера) своему другу, то устройство распознает их как пропуск.

    [controller addAttachmentData:data mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"];
    
  • Предположим, у меня есть файл .pkpass в моем каталоге документов или пакете приложений, затем, изменив этот файл на данные, а затем отправив его по почте, также все работает нормально.

     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"walmart" ofType:@"pkpass"];
     NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
    [controller addAttachmentData:data mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"]
    
  • Но когда я использую следующий код, он не работает.

    _passLibrary = [[PKPassLibrary alloc] init];
    _passArray = [_passLibrary passes];
    PKPass *pass = _passArray[0];
    NSData *data = [[NSData alloc] initWithContentsOfURL:[pass passURL]];
    [controller addAttachmentData:data2 mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"];
    

Еще один способ, на мой взгляд, — обмен через Bluetooth. Но это не имеет смысла, если у меня нет точных данных о пропуске. Из всех указанных выше подходов третий имеет смысл (с точки зрения качества кодирования), но данные не соответствуют требованиям.

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


person Harshit Gupta    schedule 03.10.2012    source источник
comment
[pass passURL] не является HTTP-запросом и не возвращает никаких данных. Я считаю, что протокол похож на ботинок: // и он запускает Passbook для отображения прохода.   -  person ohmi    schedule 05.10.2012
comment
Я согласен. Это имеет смысл. Но как вы думаете, есть ли способ поделиться пропусками?   -  person Harshit Gupta    schedule 05.10.2012


Ответы (1)


Если вы и ваши друзья используете одно и то же приложение, вы можете хранить список пропусков на своем сервере, помечать их как общие, отображать список общих пропусков и разрешать им получать проходы непосредственно с сервера; стандартная функция сервера‹-> приложения.

Если вы хотите использовать bluetooth, то вы немного за пределами моей зоны комфорта, но поскольку файл .pkpass представляет собой просто набор символов, вы можете передать файл/блок через эфир и создать его экземпляр с помощью API PassKit в соответствии с документами. .

person ohmi    schedule 05.10.2012
comment
По моему опыту, это всего лишь объект NSData, который нам нужно перенести с одного устройства на другое. - person Harshit Gupta; 06.10.2012