1

通帳に追加できるパスをその場で作成するPassSlotを使用しています。メールに添付できるようにデバイスにダウンロードしようとしています。これが私がこれまでに持っているものです:

[PassSlot passFromTemplateWithName:@"LoveCouponCards" withValues:values pass:^(PSPass *pass) {
    [PassSlot downloadPass:pass pass:^(PSPass *pass) {
        PKPass *pkpass = [pass performSelector:@selector(pass)];
        NSLog(@"Pass: %@", pkpass);


        MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;


        NSArray *toRecipients = [NSArray arrayWithObject:@"friend@example.com"];


        [picker setToRecipients:toRecipients];


        [picker addAttachmentData:pkpass mimeType:@"application/vnd.apple.pkpass" fileName:@"HI"];

        // Fill out the email body text
        NSString *emailBody = \\
        [picker setMessageBody:emailBody isHTML:NO];

        [self presentViewController:picker animated:YES completion:nil];


    }];
}];

問題は、電子メールのaddAttachment部分で、NSDataが基本的にPKPassに関連付けることができないというエラーをスローすることです。パスをNSDataに変換して、添付できるようにするにはどうすればよいですか?

アップデート:

やってみた

 NSURL *url = pkpass.passURL;
 NSData *so = [NSData dataWithContentsOfURL:url];

次に、addAttachmentとして「so」を入力しますが、電子メールには何も添付されませんでした。

4

2 に答える 2

3

まず、のpassURLプロパティはPKPass、あなたが思っているようには機能しません。パス自体へのURLではありません。これは、Passbookアプリを開き、要求されたパスをロードするURLです。

withを作成することはできますが、そのプロセスを逆にすることはできません。デバイスのパスを取得して、それを電子メールで送信しようとしているように聞こえます。それは許可されていません-もしそうなら、人々はパスを簡単にコピーして配布することができました(これは必ずしも良いことではありません)。PKPassNSData

ユーザーにパスを電子メールで送信する場合は、クライアント側ではなくサーバーで行う必要があります。を使用して、あなたがやろうとしていることは不可能だと思いますPassKit。ごめん!

于 2013-01-27T14:44:08.330 に答える
2

残念ながら、PassKitライブラリは、PKPassからNSDataを取り戻す方法を提供していません。

パスの生データを取得できるAPI呼び出しはすでに提供されています。PassSlot SDKを拡張して、このAPIメソッドを手動で呼び出さなくてもNSDataを取得できるようにします。

アップデート

新しいSDKバージョン0.5がリリースされました。次のコードでパスを添付できます。

[PassSlot passFromTemplateWithName:@"LoveCouponCards" withValues:values pass:^(PSPass *pass) {
    [PassSlot downloadPass:pass pass:^(PSPass *pass) {

        MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;

        [picker setToRecipients:@[@"friend@example.com"]];
        [picker addAttachmentData:pass.data mimeType:@"application/vnd.apple.pkpass" fileName:@"LoveCouponCard.pkpass"];
        [picker setMessageBody:emailBody isHTML:NO];

        [self presentViewController:picker animated:YES completion:nil];
    }];
}];
于 2013-01-27T21:19:11.793 に答える