2016-08-05 29 views
0

Ich benutze diese passgenerator Bibliothek, um eine .pkpass zu generieren, die auf einem Apple Wallet auf dem iPhone installiert werden soll. Die .pkpass Datei wurde erfolgreich erstellt, konnte jedoch nicht zu "wallet" auf dem iPhone hinzugefügt werden. Es wird sogar kein Fehler angezeigt, wenn ich versuche, diese Datei über einen E-Mail-Anhang zu öffnen. Wenn ich es mit "Pass Viewer" auf dem Mac öffne, zeigt es einen Fehler im Barcode-Bereich. Hier ist Screenshot;PHP generiert Pass wird nicht in Brieftasche auf einem iPhone installiert

coupon

Ich weiß nicht, wo ich etwas falsch tue. Ich benutze Laravel 5.1 und ich habe dieses Paket korrekt benötigt und auch als Dokumentation gefragt, um Umgebungsvariablen zu setzen, um Zertifikate Pfade zu setzen.

Hier ist mein Controller-Code, wo ich seine Konfigurationen im JSON-Format einstellen.

public function index(PassGenerator $pass) 
    { 
     $pass_identifier = 'testPkPass'; // This, if set, it would allow for retrieval later on of the created Pass 
     $pkpass = $pass->getPass($pass_identifier); 
     if (!$pkpass) { 
      $pkpass = $this->createWalletPass($pass_identifier); 
     } 
     $path = storage_path().'/app/passgenerator/'.$pass_identifier.'.pkpass'; 
     return Response::download($path, $pass_identifier.'.pkpass', [ 
      'Content-Transfer-Encoding' => 'binary', 
      'Content-Description' => 'File Transfer', 
      'Content-Disposition' => 'attachment; filename="myTestingPass.pkpass"', 
      'Content-length' => strlen($pkpass), 
      'Content-Type' => PassGenerator::getPassMimeType(), 
      'Pragma' => 'no-cache', 
     ]); 
    } 

    private function createWalletPass($pass_identifier) 
    { 

     $pass = new PassGenerator($pass_identifier); 

     $pass_definition = [ 
      "description"  => "description", 
      "formatVersion"  => 1, 
      "organizationName" => "Black Book", 
      "passTypeIdentifier"=> "pass.biz.myIdentifier.coupon", 
      "serialNumber"  => "123456", 
      "teamIdentifier" => "xyz", 
      "foregroundColor" => "rgb(255, 255, 255)", 
      "backgroundColor" => "rgb(44, 49, 51)", 
      "barcode" => [ 
       "message" => "encodedmessageonQR", 
       "format" => "PKBarcodeFormatQR", 
       "altText" => "altextfortheQR", 
       "messageEncoding"=> "utf-8", 
      ], 
      "coupon" => [ 
       "headerFields" => [ 
        [ 
         "key" => "header", 
         "label" => "Value", 
         "value" => "30%" 
        ] 
       ], 
       "secondaryFields" => [ 
        [ 
         "key" => "welcome", 
         "label" => "", 
         "value" => "Welcome valued customer!" 
        ], 
        [ 
         "key" => "date", 
         "label" => "EXPIRES", 
         "value" => "2016/06/29" 
        ] 
       ], 
       "backFields" => [ 
        [ 
         "key" => "terms", 
         "label" => "Terms & Conditions", 
         "value" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
        ], [ 
         "key" => "contact", 
         "label" => "Contact Us", 
         "value" => "[Contact-us] Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco." 
        ], 
       ], 
      ], 
     ]; 

     $pass->setPassDefinition($pass_definition); 

     // Add assets to the PKPass package 
     $pass->addAsset(base_path('public/assets/wallet/background.png')); 
     $pass->addAsset(base_path('public/assets/wallet/thumbnail.png')); 
     $pass->addAsset(base_path('public/assets/wallet/icon.png')); 
     $pass->addAsset(base_path('public/assets/wallet/logo.png')); 

     $pkpass = $pass->create(); 
     return $pkpass; 
    } 

Jede Hilfe würde wirklich geschätzt werden. Bitte lassen Sie mich wissen, wenn ich irgendetwas falsch mit Konfiguration oder woanders mache.

+0

Was sagen Ihre Xcode-Protokolle? Wenn Sie keinen Mac oder Xcode haben, können Sie einen Link zum .pkapss-Bundle veröffentlichen. Sie haben kein Ablaufdatum in Ihrem JSON festgelegt, daher vermute ich, dass der Barcode ausgegraut ist, weil Ihr Pass-Type-ID-Zertifikat abgelaufen ist oder widerrufen wurde. – PassKit

+0

Sie haben auch eine leere Zeichenfolge in Ihrem sekundären Etikett. Entfernen Sie den Schlüssel oder fügen Sie ein Leerzeichen hinzu. Eine leere Zeichenfolge verursacht einen Fehler. – PassKit

+0

@PassKit Ich habe mein sekundäres Feld geändert, aber es hat keine Auswirkungen. Können Sie mir Ihre E-Mail-Adresse angeben, damit ich Ihnen eine E-Mail mit dem Pass-Paket zusenden kann? –

Antwort

1

Sie haben ein Problem mit Ihrer Unterschrift.

Aug 5 16:38:36 pfr MobileSafari(PassKitCore)[2017] <Notice>: Error evaluating trust: <private> 
Aug 5 16:38:36 pfr MobileSafari(PassKitCore)[2017] <Notice>: Signature validation: *** FAILED *** 
Aug 5 16:38:36 pfr MobileSafari(PassKitCore)[2017] <Fault>: Invalid data error reading pass <private>. <private> 
Aug 5 16:38:36 pfr MobileSafari(PassKitCore)[2017] <Notice>: Invalid data error reading pass <private>. <private> 
Aug 5 16:38:36 pfr MobileSafari[2017] <Notice>: PassBook Pass download failed: The pass cannot be read because it isn't valid. 

Sie pass.json ein Team Kennung hat "teamIdentifier":"5w2h"

Nach Ihrer Signatur-Datei, Ihr Team Kennung WY92JHSJ83. Beheben Sie Ihre Teamkennung und versuchen Sie es erneut.

Auch Sie können Ihre background.png und thumbnail.png fallen lassen, da sie keine gültigen Bilder für einen Coupon-Format-Pass sind.

+0

Vielen Dank @PassKit. Du bist Lebensretter. Kann mir bitte sagen, wie kann ich diese Protokolle überprüfen, wie Sie für das Debugging getan haben. –

+1

Sie benötigen ein iPhone, einen Mac und Xcode. Haken Sie Ihr iPhone an den Mac, wählen Sie dann in Xcode Fenster-> Geräte und dann Ihr Gerät aus. Die Protokolle werden im unteren Fensterbereich ausgegeben. – PassKit