我使用的是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相关。如何将pass转换为NSData,以便附加它?
更新:
我试着去做
NSURL *url = pkpass.passURL;
NSData *so = [NSData dataWithContentsOfURL:url];然后将“so”作为addAttachment,但它没有附加到电子邮件中。
发布于 2013-01-28 05:19:12
不幸的是,PassKit库没有提供从PKPass中获取NSData的方法。
我们已经提供了一个API call,它允许您获取pass的原始数据。我们将使用一个方法来扩展我们的API SDK,该方法允许您无需手动调用此PassSlot方法即可获取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-27 22:44:08
首先,PKPass的passURL属性并不完全按照您所想的方式工作。它不是pass本身的URL。这是一个打开Passbook应用程序并加载所请求的通行证的URL。
您可以使用NSData创建一个PKPass,但是您不能颠倒这个过程。这听起来像是你想在设备上获得一个通行证,然后通过电子邮件发送出去。这是不允许的-如果是这样的话,人们可以很容易地复制和分发通行证(这不一定是一件好事)。
如果您想通过电子邮件向用户发送通行证,则需要在服务器上执行此操作,而不是客户端。我担心使用PassKit无法完成您想要做的事情。抱歉的!
https://stackoverflow.com/questions/14544552
复制相似问题