我已经成功创建了.pkpass文件,并且api成功返回了.pkpass文件。在Xamarin表单中,我使用了API,并尝试将.pkpass文件添加到钱包中,但是钱包不会自动启动。
通过Xamarin应用程序从api使用的文件工作正常,该文件没有问题。我已作为电子邮件附件发送并下载了附件-.pkpass文件随钱包应用程序自动打开。
public async Task DigitalMembershipCardApple()
{
string accesstoken = _dataHelper.GetAccessTokenFromDBAsync().Result;
try
{
_oHttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accesstoken);
HttpResponseMessage response = await _oHttpClient.GetAsync(new Uri(Constants.Urls.DigitalMembershipCardApple + _dataHelper.GetPersonID()));
byte[] filebytes = await response.Content.ReadAsByteArrayAsync();
string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), Constants.CISIMembershipCardFields.FileDownloadName);
if (File.Exists(filePath))
{
File.Delete(filePath);
File.WriteAllBytes(filePath, filebytes);
}
else
{
File.WriteAllBytes(filePath, filebytes);
}
await Launcher.OpenAsync(new OpenFileRequest
{
File = new ReadOnlyFile(filePath, Constants.CISIMembershipCardFields.MimeTypeApple)
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
throw ex;
}
}
我也使用了Xamarin基本启动器,但这没有帮助。
阅读PassKit in Xamarin.iOS的文档之前,在Adding Passes into Wallet部分中,我没有使用Apple钱包:
可以通过以下方式将通行证添加到电子钱包:
- Conduit Apps –它们不会直接处理通行证,它们只是加载通行证文件,并向用户显示将其添加到电子钱包的选项。
- 伴侣应用程序–由提供商编写,用于分发通行证,并提供其他功能来浏览或编辑通行证。 Xamarin.iOS应用程序具有对PassKit API的完全访问权限,以创建和处理通行证。然后可以使用PKAddPassesViewController将通行证添加到电子钱包。此过程在本文档的“伴侣应用程序”部分中有更详细的描述。
[Mail
是管道应用程序,它将附件识别为通行证,因此钱包应用程序自动打开。
Your xamarin app
是Companion App,然后可以使用PKAddPassesViewController
将通行证添加到电子钱包。在您的应用中读取文件将无法打开钱包应用。
我的想法是,您可以下载文件并按照步骤here通过使用iOS项目中的dependency-service打开钱包应用。