How to set MIME type of application/vnd.apple.pkpass in order to share pass by link or email

前端 未结 2 1053
慢半拍i
慢半拍i 2020-12-03 11:43

I just created an app and a pass, so I can add the pass to the PassBook in iPod, but I cannot share the pass by email or link from web server. From the documentation I read

相关标签:
2条回答
  • 2020-12-03 12:34

    Apache

    Add the following line to either:

    • the .htaccess in the directory serving your .pkpass, or
    • to the mime.types file, or
    • to your appache httpd.conf or virtuatl server .conf file

    Then restart Apache (not required if adding to .htaccess)

    AddType application/vnd.apple.pkpass    pkpass
    

    nginx

    Add the following line to your mime.types file and restart nginx

    application/vnd.apple.pkpass    pkpass;
    

    IIS

    1. Open IIS Manager and navigate to the level you want to manage.
    2. In Features View, double-click MIME Types.
    3. In the Actions pane, click Add.
    4. In the Add MIME Type .pkpass
    5. Type application.vnd.pkpass n the MIME text box
    6. Click OK
    7. Restart IIS

    If you are serving your file via a script and are not able to edit your web server config you could add the following line before any content is sent:

    PHP

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

    C#

    WebClient client = new WebClient();
    client.Headers.Add("Content-Type", "application/vnd.apple.pkpass");
    
    0 讨论(0)
  • 2020-12-03 12:37

    For a pure PHP solution, add your .pkpass bundle to the server, then create the following file and name this 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);
    

    Then create a second file linking to the file you created above.

    <a href="pass.php">Click to download your pass</a>
    
    0 讨论(0)
提交回复
热议问题