0

通帳アプリに定期券があるとします。そして、私の友人の一人とパスを共有したかった.

  • 私のアプリでは、(サーバーから受信した) .pkpass データを友人にメールすると、デバイスによってパスとして認識されます。

    [controller addAttachmentData:data mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"];
    
  • ドキュメント ディレクトリまたはアプリケーション バンドルに .pkpass ファイルがあり、そのファイルをデータに変更してからメールで送信すると、問題なく動作します。

     NSString *filePath = [[NSBundle mainBundle] pathForResource:@"walmart" ofType:@"pkpass"];
     NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
    [controller addAttachmentData:data mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"]
    
  • しかし、次のコードを使用すると機能しません。

    _passLibrary = [[PKPassLibrary alloc] init];
    _passArray = [_passLibrary passes];
    PKPass *pass = _passArray[0];
    NSData *data = [[NSData alloc] initWithContentsOfURL:[pass passURL]];
    [controller addAttachmentData:data2 mimeType:@"application/vnd.apple.pkpass" fileName:@"Pass.pkpass"];
    

私が考えているもう 1 つの方法は、Bluetooth 経由で共有することです。しかし、正確なパスデータがなければ意味がありません。上記のすべての指定されたアプローチから、3 番目のアプローチは (コーディングの品質に関して) 理にかなっていますが、データはそれほど必要ではありません。

また、共有を可能にする他の方法を提案してください。

4

1 に答える 1

0

あなたとあなたの仲間が同じアプリを使用している場合は、パスのリストをサーバーに保持し、それらを共有可能としてマークし、共有可能なパスのリストを表示して、サーバーから直接パスを取得できるようにします。標準的なサーバー <-> アプリのような機能です。

Bluetooth を使用したい場合は、私の快適ゾーンから少し外れていますが、.pkpass ファイルは単なる文字の塊であるため、ファイル/ブロブをイーサ経由で転送し、ドキュメントに従って PassKit API を使用してインスタンス化できます。 .

于 2012-10-05T20:43:04.917 に答える