首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在代码中将PKPass附加到电子邮件

在代码中将PKPass附加到电子邮件
EN

Stack Overflow用户
提问于 2013-01-27 12:53:57
回答 2查看 847关注 0票数 1

我使用的是PassSlot,它创建了一个可以添加到存折的即时通行证。我正在尝试将其下载到设备上,以便可以附加到电子邮件中。这是我到目前为止所知道的:

代码语言:javascript
复制
[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,以便附加它?

更新:

我试着去做

代码语言:javascript
复制
 NSURL *url = pkpass.passURL;
 NSData *so = [NSData dataWithContentsOfURL:url];

然后将“so”作为addAttachment,但它没有附加到电子邮件中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-28 05:19:12

不幸的是,PassKit库没有提供从PKPass中获取NSData的方法。

我们已经提供了一个API call,它允许您获取pass的原始数据。我们将使用一个方法来扩展我们的API SDK,该方法允许您无需手动调用此PassSlot方法即可获取NSData。

更新

新的SDK版本0.5现已发布。您可以使用以下代码附加该过程:

代码语言:javascript
复制
[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];
    }];
}];
票数 2
EN

Stack Overflow用户

发布于 2013-01-27 22:44:08

首先,PKPasspassURL属性并不完全按照您所想的方式工作。它不是pass本身的URL。这是一个打开Passbook应用程序并加载所请求的通行证的URL。

您可以使用NSData创建一个PKPass,但是您不能颠倒这个过程。这听起来像是你想在设备上获得一个通行证,然后通过电子邮件发送出去。这是不允许的-如果是这样的话,人们可以很容易地复制和分发通行证(这不一定是一件好事)。

如果您想通过电子邮件向用户发送通行证,则需要在服务器上执行此操作,而不是客户端。我担心使用PassKit无法完成您想要做的事情。抱歉的!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14544552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档