我在使用Xamarin的Apple Passbook存在问题。我从提供给我的服务器通过HTTP Post收到了pkpass作为附件。
以下是回复中的必要信息
版本:1.1,内容:System.Net.Http.StreamContent 内容长度:103587 Content-Type:application / vnd.apple.pkpass 内容 - 处理:附件;文件名= 0000000.pkpass
我收到它作为一个字节[],这就是我将它保存到设备的方式:
byte[] result = await response.Content.ReadAsByteArrayAsync();
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var directoryname = Path.Combine(documents, "..", "Library", "Caches");
var files = Path.Combine(directoryname, string.Format("{0}.pkpass", trimmedPlanMemberID));
File.WriteAllBytes(files, result);
当我尝试使用Passviewer在Mac上打开.pkpass时,我收到错误“无法打开通行证”。
我错过了一步吗?我必须解码字节[]才能读取这个吗?我不太熟悉这个,所以我还在学习。我还使用Xamarin PassKit示例(CouponBanana2.pkpass)测试了我的应用程序,该示例在我的应用程序中运行良好。
我在这里得到一个例外:
NSData nsdata;
using (FileStream oStream = File.Open(newFilePath, FileMode.Open))
{
nsdata = NSData.FromStream(oStream);
}
var err = new NSError(new NSString("42"), -42);
var newPass = new PKPass(nsdata, out err); // exception here not being able to read nsdata
如果我错过了一步,我还需要做些什么才能成功打开.pkpass。收到文件时文件是否可能损坏?如果需要更多信息,我可以提供帮助理解,因为我现在已经用尽了所有选项。