Генерация пропусков не загружается - PullRequest
0 голосов
/ 07 октября 2019

Я создаю приложение React, которое генерирует пропуски IOS и отправляет их пользователю либо по электронной почте, либо по SMS. Я использую камень passbook для генерации пропусков. Однако, когда я пытаюсь открыть их из IOS или симулятора, кошелек открывается, но затем пропускает нет.

Я проверил инструкторов по установке и не вижу ничего, что мне не хватает.

# config/intitalize/passbook.rb
Passbook.configure do |passbook|
  passbook.p12_password = '12345'
  passbook.p12_key = Rails.root.join('certificates/passkey.pem')
  passbook.p12_certificate = Rails.root.join('certificates/passcertificate.pem')
  passbook.wwdc_cert = Rails.root.join('certificates/WWDR.pem')
end

# passes_controller.rb
class PassesController < ApplicationController
  def generate
    user_card = UserCard.find_by_hash_id params[:user_card_id]
    pass = user_card.generate_pass
    send_file pass.path, type: 'application/vnd.apple.pkpass', disposition: 'attachment', filename: "pass.pkpass" 
  end
end

# models/user_card.rb
...
  def generate_pass
    data = {
      formatVersion: 1,
      passTypeIdentifier: "pass.com.example.stampcard",
      serialNumber: "TIC1000000518",
      teamIdentifier: ENV['APPLE_TEAM_ID'],
      organizationName: self.card.organization.name,
      description: self.card.desc,
      barcode: {
        message: self.hash_id,
        format: "PKBarcodeFormatPDF417",
        messageEncoding: "iso-8859-1",
        altText: self.hash_id
      }
    }
    pass = Passbook::PKPass.new data.to_json.to_s
    pass.addFiles ['logo.png', 'logo@2x.png', 'icon.png', 'icon@2x.png']
    pass.file
  end
...

Я получаю следующие два файла после распаковки файла pass.pkpass plus logo.png |logo@2x.png |icon.png |icon@2x.png

pass.json

{"formatVersion":1,"passTypeIdentifier":"pass.com.example.pass","serialNumber":"001","teamIdentifier":"KMCYP92B9M","organizationName":"Douglas, Dibbert and Reynolds","description":"facilitate robust solutions","barcode":{"message":"BInPV506nXdH","format":"PKBarcodeFormatPDF417","messageEncoding":"iso-8859-1"},"coupon":{"primaryFields":[{"key":"offer","label":"for you","value":"Free hug"}]}}

manifest.json

{"pass.json":"1292e22d5bea9edc79f37115fa680f7c4452a4ec","logo.png":"50a2b2fa88be143902527556d0cde943ce887028","logo@2x.png":"50a2b2fa88be143902527556d0cde943ce887028","icon.png":"50a2b2fa88be143902527556d0cde943ce887028","icon@2x.png":"50a2b2fa88be143902527556d0cde943ce887028"}

1 Ответ

0 голосов
/ 09 октября 2019

ОК, у меня это работает. Я знаю, что это не самый удовлетворительный ответ, но я смог решить эту проблему путем восстановления сертификатов. Кроме того, я понял, что серийный номер был неправильным, поскольку я не использовал хешированное значение

...