如何设置application / vnd.apple.pkpass的MIME类型以便通过链接或电子邮件共享传递

时间:2013-03-13 11:07:04

标签: ios mime-types passbook

我刚刚创建了一个应用程序和一个传递,所以我可以将传递添加到iPod中的PassBook,但我无法通过电子邮件或Web服务器链接共享传递。从我从Apple读取的文档中,我需要将MIME类型添加为application/vnd.apple.pkpass。但是,我不清楚我应该采取什么措施。我不知道如何使用MIME类型。

我应该如何添加此MIME类型才能使用来自我的网络服务的传递?

2 个答案:

答案 0 :(得分:13)

<强>的Apache

将以下行添加到:

  • 为.pkpass提供服务的目录中的.htaccess,或
  • mime.types文件或
  • 到您的appache httpd.conf或virtuatl服务器.conf文件

然后重启Apache(如果添加到.htaccess则不需要)

AddType application/vnd.apple.pkpass    pkpass

<强> nginx的

将以下行添加到mime.types文件并重新启动nginx

application/vnd.apple.pkpass    pkpass;

<强> IIS

  1. 打开IIS管理器并导航到要管理的级别。
  2. 在“功能视图”中,双击“MIME类型”。
  3. 在“操作”窗格中,单击“添加”。
  4. 在添加MIME类型.pkpass
  5. 在MIME文本框中输入application.vnd.pkpass
  6. 点击确定
  7. 重新启动IIS

  8. 如果您通过脚本提供文件并且无法编辑您的网络服务器配置,则可以在发送任何内容之前添加以下行:

    <强> PHP

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

    <强> C#

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

答案 1 :(得分:1)

对于纯PHP解决方案,将.pkpass包添加到服务器,然后创建以下文件并将此文件命名为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);

然后创建第二个文件链接到您在上面创建的文件。

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