iOS6: Pass не может быть добавлен в Passbook

У меня проблема, я могу открыть проход сберегательной книжки в своем приложении, но когда я «добавлю» кнопку, она не может сберегательную книжку, исчезает только PassesViewController. Мой проход может скачать:

https://ap.loc.sh/passbook/?couponId=50ea8c17e4b09d3fcd677612&memberId=50ef9fcfe4b082578408358f

я уверен, что мой pass.json верен. потому что, когда я удаляю манифест и подписываю два файла, используя знак Apple для передачи, все в порядке, но использование php pass lib приводит к ошибке.


person pengwang    schedule 15.01.2013    source источник
comment
с чем mistake вы сталкиваетесь?   -  person Raptor    schedule 15.01.2013
comment
мой пропуск не добавляется в сберкнижку, но я могу его загрузить и посмотреть   -  person pengwang    schedule 15.01.2013
comment
Если я нажму на вашу ссылку, пропуск загрузится и может быть добавлен в сберегательную книжку. В чем твоя проблема?   -  person PassKit    schedule 15.01.2013


Ответы (1)


После тестирования я обнаружил следующее (используя iPhone 5 под управлением iOS 6.1 beta 4):

в итоге есть два вопроса;

  • Ваш веб-сервис отправляет недопустимый ответ на https://ap.loc.sh/passbook/?couponId=486/v1/devices/5bca731a5779527c406213e9a847de97/registrations/pass.socialPoint.passbook/486 (это должно вернуть массив серийных номеров, но просто возвращает 1111)
  • Пасс, отправляемый через ваш веб-сервис, содержит неверные данные.

Следующие шаги были предприняты для диагностики вашей проблемы, я также включил выдержки из журнала консоли устройства.

  • Пакет pkpass успешно добавляется в Passbook
  • Пропуск успешно регистрируется в вашем веб-сервисе

Jan 15 14:03:03 passd[4219] <Warning>: Generating POST request with URL <https://ap.loc.sh/passbook/?couponId=486/v1/devices/5bca731a5779527c406213e9a847de97/registrations/pass.socialPoint.passbook/486>
Jan 15 14:03:03 passd[4219] <Warning>: Request contains header field <Authorization: ApplePass vxwxd7J8AlNNFPS8k0a0FfUFtq0ewzFdc>
Jan 15 14:03:03 passd[4219] <Warning>: Request contains body dictionary {
                pushToken = XXXXXXX94500332b789a3ddb61800586d5c9aad1cb035c9f2725761d419950b2;
            }
Jan 15 14:03:06 passd[4219] <Warning>: Register task (for device 5bca731a5779527c406213e9a847de97, pass type pass.socialPoint.passbook, serial number 486; with web service url https://ap.loc.sh/passbook/?couponId=486) got response with code 200
  • Затем устройство пытается получить серийные номера для всех пропусков одного и того же сертификата (pass.socialPoint.passbook) — это стандартная часть регистрации на случай, если данные пропуска устарели и их необходимо обновить.

Jan 15 14:03:06 passd[4219] <Warning>: Generating GET request with URL <https://ap.loc.sh/passbook/?couponId=486/v1/devices/5bca731a5779527c406213e9a847de97/registrations/pass.socialPoint.passbook>
Jan 15 14:03:11 passd[4219] <Warning>: Get serial #s task (for device 5bca731a5779527c406213e9a847de97, pass type pass.socialPoint.passbook, last updated (null); with web service url https://ap.loc.sh/passbook/?couponId=486) got response with code 200 
Jan 15 14:03:11 passd[4219] <Warning>: Get serial #s task (for device 5bca731a5779527c406213e9a847de97, pass type pass.socialPoint.passbook, last updated (null); with web service url https://ap.loc.sh/passbook/?couponId=486) encountered error: Server response was malformed (The operation couldn’t be completed. (Cocoa error 3840.)) 
Jan 15 14:03:11 passd[4219] <Warning>: Generating POST request with URL <https:/ap.loc.sh/passbook/?couponId=486/v1/log> Jan 15 14:03:11 Anatta passd[4219] <Warning>: Request contains body dictionary {
            logs =     (
                "[2013-01-15 14:03:11 +0800] Get serial #s task (for device 5bca731a5779527c406213e9a847de97, pass type pass.socialPoint.passbook, last updated (null); with web service url https://ap.loc.sh/passbook/?couponId=486) encountered error: Server response was malformed (The operation couldn\U2019t be completed. (Cocoa error 3840.))"
            );  } 
Jan 15 14:03:11 passd[4219] <Warning>: Get serial #s task (for device 5bca731a5779527c406213e9a847de97, pass type pass.socialPoint.passbook, last updated (null); with web service url https://ap.loc.sh/passbook/?couponId=486) will retry after 10 seconds
  • устройство получает недопустимый ответ, но продолжает повторять попытки.

  • При ручном обновлении прохода выявляется еще одна ошибка:


Jan 15 14:11:05 passd[4238] <Warning>: Get pass task (pass type pass.socialPoint.passbook, serial number 486, if-modified-since (null); with web service url https://ap.loc.sh/passbook/?couponId=486) got response with code 200
Jan 15 14:11:05 passd[4238] <Warning>: Invalid data error reading pass . Could not read json from URL file://localhost/var/mobile/Library/Caches/com.apple.passd/com.apple.Shoebox/EE7EC165-DFC8-4B74-8444-37FB4C84B542.pkpass/pass.json: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 369.) UserInfo=0x361810 {NSDebugDescription=Invalid value around character 369.}
Jan 15 14:11:05 passd[4238] <Warning>: Get pass task (pass type pass.socialPoint.passbook, serial number 486, if-modified-since (null); with web service url https://ap.loc.sh/passbook/?couponId=486) encountered error: Received invalid pass data (The pass cannot be read because it isn't valid.)
Jan 15 14:11:05 passd[4238] <Warning>: Generating POST request with URL <https://ap.loc.sh/passbook/?couponId=486/v1/log>
Jan 15 14:11:05 Anatta passd[4238] <Warning>: Request contains body dictionary {
        logs =     (
            "[2013-01-15 14:11:05 +0800] Get pass task (pass type pass.socialPoint.passbook, serial number 486, if-modified-since (null); with web service url https://ap.loc.sh/passbook/?couponId=486) encountered error: Received invalid pass data (The pass cannot be read because it isn't valid.)"
        );
    }

Кажется, что pass.json второго прохода, который отправляет ваш веб-сервис, неверен.

При проверке pass.json после ключа местоположения появляется ошибка:

{
  "formatVersion" : 1,
  "passTypeIdentifier" : "pass.socialPoint.passbook",
  "serialNumber" : "",
  "teamIdentifier" : "9TS732CS23",
  "authenticationToken" : "vxwxd7J8AlNNFPS8k0a0FfUFtq0ewzFdc",
  "webServiceURL" : "https://ap.loc.sh/passbook/?couponId=",
  "associatedStoreIdentifiers":[564576004],
  "relevantDate" : "1970-01-01T08:00:00+08:00",
  "locations" : ,  // Syntax error
  "organizationName" : "portaura",
  "logoText" : "",
  "description" : "Here is description",
  "backgroundColor" : "rgb(146, 108, 63)",
  "coupon" : { etc...
person PassKit    schedule 15.01.2013