我正在尝试在iOS Xamarin应用程序上实现“设置Apple Pay”按钮。我已经添加了按钮并为其单击处理程序。然后,我使用PKPassLibrary.OpenPaymentSetup()打开电子钱包。然后,如果用户已成功将Card添加到电子钱包中,则需要通过将“ SetUp ApplePay按钮”更改为“使用Apple Pay进行支付”来处理此事件。但是我找不到正在工作的任何事件处理程序或类似的东西。
我尝试过的事情:
private PKPassLibrary _library;
private NSObject _walletNotificationSubscription;
private void OnSetuApplePayClicked(object button, EventArgs args)
{
_library = new PKPassLibrary();
_library.OpenPaymentSetup();
_walletNotificationSubscription = PKPassLibrary.Notifications.ObserveDidChange(_library, HandleEventHandler);
}
void HandleEventHandler(object sender, NSNotificationEventArgs e)
{
_walletNotificationSubscription.Dispose();
ViewModel.UpdateApplePay();
SetButtonVisibility();
}
但不起作用。
P.S .:我想我可能会观察到不正确的事件。
答案 0 :(得分:1)
尝试使用以下代码:
if(PKPaymentAuthorizationViewController.CanMakePayments)
{
//the device supports Apple Pay
//check whether the user can make a payment with a bank card ,such as Amex ,MasterCard,Visa,ChinaUnion and so on
NSString[] paymentString = { PKPaymentNetwork.Amex, PKPaymentNetwork.ChinaUnionPay, PKPaymentNetwork.MasterCard, PKPaymentNetwork.Visa };
if(PKPaymentAuthorizationViewController.CanMakePaymentsUsingNetworks(paymentString))
{
//user has added bank card ,do something you want
}
else
{
//user has not added bank card
}
}
else
{
//the device doesn't support Apple Pay
}
还有其他付款方式,您可以在其中查看
public static class PKPaymentNetwork
答案 1 :(得分:0)
似乎没有回调或事件(至少在Xamarin中没有)。因此,当用户发送到电子钱包时,我不得不切换控制器的布尔属性,然后,当用户返回应用时,我会跟踪“ WillEnterForeground”应用事件,检查布尔属性是否为true(如果为true,则用户从钱包)。
请注意,“ ViewWillAppear”在这种情况下不起作用,它不是Android的“ OnResume”的类似物。
还请注意,将卡添加到钱包后15到20秒后就会激活该卡,因此我使用“监听周期”来跟踪卡的激活情况。
最终激活卡后,我将按钮从设置Apple Pay切换为使用Apple Pay付款。