2013-03-13 10 views
6

Ho appena creato un'app e un pass, quindi posso aggiungere il pass al passbook in iPod. Ma non posso condividere il pass tramite email o link dal web server. Dai documenti che ho letto da Apple, ho bisogno di aggiungere il tipo mime come application/vnd.apple.pkpass. Tuttavia, non capisco chiaramente i passi che dovrei fare. Non so come usare il tipo MIME. Non so come farlo Quindi, sai come aggiungere questo tipo di mime per utilizzare il pass dal servizio web?Come impostare il tipo mime di application/vnd.apple.pkpass per condividere il pass tramite link o email

+0

cosa del server stai usando (Apache, nginx, IIS?) Che lingua stai usando (PHP, C#?) – PassKit

+0

server è Apache e io uso il linguaggio PHP. – malinchhan

+0

Quale delle seguenti soluzioni hai provato? – PassKit

risposta

9

Apache

Aggiungere la seguente riga a uno:

  • il .htaccess nella directory servire il vostro .pkpass, o
  • al file mime.types, o
  • al tuo appache httpd.conf o server virtuatl .conf file

Quindi riavviare Apache (non richiesto se l'aggiunta di .htaccess)

AddType application/vnd.apple.pkpass pkpass 

nginx

Aggiungere la seguente riga al file mime.types e riavviare nginx

application/vnd.apple.pkpass pkpass; 

IIS

  1. Aprire Gestione IIS e passare al livello che si desidera gestire.
  2. Nella vista Funzionalità, fare doppio clic su Tipi MIME.
  3. Nel riquadro Azioni, fare clic su Aggiungi.
  4. Nel Aggiungi tipo MIME .pkpass
  5. Tipo application.vnd.pkpass n casella di testo MIME
  6. Fare clic su OK
  7. Riavviare IIS

Se si sta servendo il file tramite uno script e non sono in grado di modificare la configurazione del server web è possibile aggiungere la seguente riga prima che venga inviato qualsiasi contenuto:

PHP

header('Content-Type: application/vnd.apple.pkpass'); 

C#

WebClient client = new WebClient(); 
client.Headers.Add("Content-Type", "application/vnd.apple.pkpass"); 
+0

Mi è piaciuto come hai scritto sopra e questo è il contenuto del mio file php: Click me to add pass"; ?> È così per i test? – malinchhan

+0

Vedere la mia risposta alternativa per una soluzione PHP pura – PassKit

+0

wow, ora funziona! Grazie mille ! – malinchhan

1

Per una soluzione PHP puro, aggiungere il pacchetto .pkpass al server, quindi creare il seguente file e il nome questo file pass.php.

<?php 
$pkpass_file = '/path/to/your/.pkpass/file/GenericMemberCard.pkpass'; 

header("Pragma: no-cache"); 
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/vnd.apple.pkpass"); 
header('Content-Disposition: attachment; filename="pass.pkpass"'); 
clearstatcache(); 
$filesize = filesize($pkpass_file); 
if ($filesize) 
    header("Content-Length: ". $filesize); 
header('Content-Transfer-Encoding: binary'); 
if (filemtime($pkpass_file)) { 
    date_default_timezone_set("UTC"); 
    header('Last-Modified: ' . date("D, d M Y H:i:s", filemtime($pkpass_file)) . ' GMT'); 
} 
flush(); 
readfile($pkpass_file); 

Quindi creare un secondo file che si collega al file creato in precedenza.

<a href="pass.php">Click to download your pass</a> 
+0

Sto provando la stessa identica cosa, ma per qualche motivo mostra sempre "Safari non può scaricare" nei miei iPhone 4 e 6. Sarebbe bello se tu potessi aiutarmi con questo - ho provato questo dallo scorso 1 giorno e Ho un requisito urgente. –

+0

Molto probabilmente il tuo file di firma non è corretto, ma potrebbe anche essere un problema con il tuo pass.json. Attiva la registrazione del libretto degli accessi dal menu degli sviluppatori del telefono, collega il telefono a Xcode e controlla l'output della console mentre tenti di caricare il passaggio. Questo dovrebbe darti un'idea di ciò che sta andando storto. – PassKit

Problemi correlati