所以我的目标是让苹果支付按钮显示在支持苹果支付的设备上,并隐藏在不支持它的设备上。
目前我有一个带有两个按钮的 vc,一个是 Apple Pay 按钮,一个是用于正常结账的按钮。我使用逻辑来确定要显示的正确按钮,如果设备支持 Apple Pay,它会同时显示两者,如果不支持,它会显示正常的结账按钮。
以下是模拟器的示例,支持 Apple Pay 的设备:
这就是支持 Apple Pay 的设备的样子。这是我用来确定要显示哪些按钮的逻辑:
func checkIfApplePaySupported() {
if StripeAPI.deviceSupportsApplePay() == false {
applePayButton.isHidden = true
} else {
applePayButton.isHidden = false
applePayButton.addTarget(self, action: #selector(applePayTapped), for: .touchUpInside)
}
}
非常简单,在模拟器上运行良好。我最初在故事板中隐藏了 Apple Pay 按钮,因此在视图加载时它不会有任何断断续续的 UI 移动。我在 vc 的 viewDidLoad()
中调用该方法。
现在的问题是,当我使用该确切逻辑将构建上传到 TestFlight 时,在我的 iPhone 上进行测试时,Apple Pay 按钮没有显示在 vc 中。我设置了 Apple Pay,我的钱包里有一张卡,事实上,我昨天用 Apple Pay 支付了我的杂货费用,所以毫无疑问该设备支持 Apple Pay。
这是我每次到达那个 vc 时得到的结果:
尽管我的设备全心全意支持 Apple Pay,但 Apple Pay 按钮从未出现,这就像最奇怪的错误,我无法弄清楚我这辈子做错了什么。我的朋友也发生了这种情况,他们的设备支持 Apple Pay,但他们也看不到 Apple Pay 按钮并用它付款。关于如何修复此错误的任何建议?
答案 0 :(得分:0)
您正在通过 Stripe 使用 Apple Pay。 StripeAPI.deviceSupportsApplePay() 函数不仅仅检查“设备是否支持 Apple Pay?”。它还检查用户是否至少保存了一张由 Stripe 或其他要求支持的信用卡。在 deviceSupportsApplePay() 的描述中清楚地描述了这一点。
<块引用>这是否可以通过支持的卡网络进行Apple Pay支付
通过条纹。
Stripe 支持的 Apple Pay 卡网络有:
美国运通、Visa、万事达卡、Discover、Maestro。
日本用户可以通过将 JCBPaymentNetworkSupported
设置为 YES 来启用 JCB,
在获得 JCB 批准后。 - 返回:如果设备当前能够通过一个 Apple Pay 付款,则为 YES
支持的网络。 NO 如果用户没有保存的卡
受支持的类型或其他阻止付款的限制(例如家长控制)。
用于检查您是否可以在模拟器上运行您的应用。 StripeAPI.deviceSupportsApplePay() 在模拟器中返回 true。