Ios 如何在Apple Pay PKPaymentAuthorizationViewController上方显示UIAlertView?

Ios 如何在Apple Pay PKPaymentAuthorizationViewController上方显示UIAlertView?,ios,objective-c,applepay,Ios,Objective C,Applepay,使用下面的标准UIAlertView代码将在Apple Pay PKPaymentAuthorizationViewController工作表下显示警报 如何在付款授权单上方显示?或者,是否有其他方式为Apple Pay显示错误消息?我想在用户输入无效的发货地址时给出具体的错误消息。您不能在任何远程视图控制器上显示UI元素,因为这可能会危及系统的安全性。这包括PKPaymentAuthorizationViewController 阅读有关远程视图控制器的更多信息由于系统的安全性,您无法在PKP

使用下面的标准UIAlertView代码将在Apple Pay PKPaymentAuthorizationViewController工作表下显示警报


如何在付款授权单上方显示?或者,是否有其他方式为Apple Pay显示错误消息?我想在用户输入无效的发货地址时给出具体的错误消息。

您不能在任何
远程视图控制器上显示UI元素,因为这可能会危及系统的安全性。这包括
PKPaymentAuthorizationViewController


阅读有关远程视图控制器的更多信息

由于系统的安全性,您无法在
PKPaymentAuthorizationViewController
上显示
UIAlertView

PKPaymentAuthorizationViewController
的整个UI通过远程视图控制器显示。这意味着,在您提供的PKPaymentRequest之外,不可能以其他方式设置或修改此视图的内容

要处理Apple Pay错误,您必须使用
PKPaymentAuthorizationViewControllerDelegate
委托方法来显示付款已成功完成或存在任何错误

对于show
PKPaymentAuthorizationViewController
, 将付款视图控制器显示为:

PKPaymentAuthorizationViewController *paymentVC = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentVC.delegate = self;
[self presentViewController:paymentVC animated:true completion:nil];
  • 客户使用Touch ID批准购买(或者,如果失败 3次,输入他们的密码)
  • 指纹图标变为微调器,标签为“处理”
  • 您的代表将收到 paymentAuthorizationViewController(uquot:DidAuthorizationPayment:completion:) 回拨
  • 您的应用程序与您的付款进行异步通信 处理器和网站后端,以实际与这些收费 付款细节。完成此操作后,您将调用完成 作为参数提供给您的 PKPaymentAuthorizationStatus.success或 PKPaymentAuthorizationStatus.failure,具体取决于结果
  • PKPaymentAuthorizationViewController微调器将动画设置为 成功或失败图标。如果成功,将收到通知 从客户信用卡上注明费用的存折中提取
  • 您的代表将收到 PaymentAuthorizationViewControllerdFinish(:)回调。那就是 负责调用Disclose(动画:completion:)以解除 付款屏幕


iOS 11中有一个新的回调用于

public func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController, didAuthorizePayment payment: PKPayment,
handler completion: (PKPaymentAuthorizationResult) -> Void)
如您所见,处理程序从

completion: (PKPaymentAuthorizationStatus) -> Void)

从iOS 11开始,我们将在完成处理程序上获得一个带有
n错误数组的
status


查看更多详细信息。

操作表是响应控件或操作而出现的一种特定类型的警报,它提供了一组与当前上下文相关的两个或多个选项。使用行动表让员工启动任务,或在执行潜在破坏性操作之前请求确认。在较小的屏幕上,操作表从屏幕底部向上滑动。在更大的屏幕上,一个动作表同时以弹出框的形式出现

提供一个取消按钮,如果它增加了清晰度。当用户放弃某项任务时,“取消”按钮会增强信心。取消按钮应始终包含在屏幕底部的操作表中

做出破坏性的选择。对执行破坏性或危险操作的按钮使用红色,并在操作表顶部显示这些按钮

避免在操作表中启用滚动。如果操作表有太多选项,人们必须滚动查看所有选项。滚动需要额外的时间来做出选择,如果不无意中点击按钮,很难做到这一点


有关开发人员指南,请参阅中的常量。

您如何显示警报?我对applepay了解不多,但由于它是一个视图控制器,您是否在applepayviewcontroller的视图上显示警报?不确定您的部署目标。我认为与其
show
ing一个
UIAlertView
,不如
present
ing一个
UIAlertController
。只要您有要在其顶部显示警报的
UIViewController
的引用,这应该不是问题。
public func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController, didAuthorizePayment payment: PKPayment,
handler completion: (PKPaymentAuthorizationResult) -> Void)
completion: (PKPaymentAuthorizationStatus) -> Void)
handler completion: (PKPaymentAuthorizationResult) -> Void)