2

このSOの答えは私にも当てはまりますが、「コンテンツタイプをapplication/vnd.apple.pkpassに変更する」方法がわかりません。

現在、私のpkpassへの直接リンクがダウンロードをトリガーし、コンテンツタイプをどこに設定すればよいかわかりません。

ホスティングプロバイダーに、「application/vnd.apple.pkpass」がサポートされているMIMEタイプであることを確認するように依頼しました

私が試してみました

iOS6またはMacOS10.8からリンクをクリックしたときに、ファイルを「application / vnd.apple.pkpass」として認識させるにはどうすればよいですか?

4

2 に答える 2

4

これを行うには、Web サーバーの構成を変更する必要があります。これを行う方法は、使用している Web サーバーによって異なります。サイトのサーバーを管理するホスティング会社がある場合は、その会社に依頼するか、できる場所を教えてもらう必要があります。

多くのホスティング会社は、Web サーバーに Apache を使用しています。その場合は、パブリック HTML ディレクトリに .htaccess ファイルを作成し、これを配置できます。

AddType application/vnd.apple.pkpass .pkpass

これにより、「.pkpass」で終わるすべてのファイルがそのコンテンツ タイプでダウンロードされます。

これは、クライアントに静的ファイルをダウンロードさせることを前提としています。このファイルを動的に生成する場合は、サーバーをいじる必要はまったくなく、ヘッダーを送信するだけで済みます。これは、使用しているスクリプト言語によって異なります。たとえば、PHP では次のようにします。

header("Content-Type: application/vnd.apple.pkpass");
于 2012-12-12T19:11:25.817 に答える
3

パスを動的に生成している場合は、毎回新しい .pkpass がダウンロードされることを確認し、Apple が推奨するように最終変更されたヘッダーを含むファイルを提供するために、次のことが役立つ場合があります。

PHP で書かれていますが、他の言語に簡単に移植できます。

// Assumes a .pkpass bundle named pass.pkpass in the same directory.

//Prevent caching
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");


// Set MIME type, encoding and force download
header("Content-type: application/vnd.apple.pkpass; charset=UTF-8");
header('Content-Transfer-Encoding: binary');
header('Content-Disposition:attachment; filename="pass.pkpass"');


// Provide a content-length header based on the file size
$filesize = filesize('pass.pkpass');
if ($filesize)
  header("Content-Length: ". $filesize);


// Set a last-modified header (used by the device in update requests)
date_default_timezone_set("UTC");
header('Last-Modified: ' . date("D, d M Y H:i:s", time())) . ' GMT');


// Clear anything that may be in the output buffer and send the bundle contents
flush();
readfile('pass.pkpass');

// Do any clean up required

exit();
于 2013-01-08T17:08:09.153 に答える