如何验证iOS设备支持Apple Pay

15

我正在启动一个Apple Pay集成项目,并已能在设备上安装交易并使用Stripe授权支付。 我实际上遇到的问题是设备测试Apple Pay支持的正确方式是什么? 因此,对于较旧的iPhone型号,即使它们安装了ios8或ios9,我也会选择隐藏Apple Pay功能。

我可以检查设备型号,并忽略< Iphone5S的Apply Pay。 但是,如果我还需要开始测试iPad版本等等,则会变得复杂。

我想知道是否存在一种单一方法来测试是否支持Apple Pay?

我在网上找到了这个方法作为一种想法,但它声称Iphone5模拟器支持apple pay,我想这不完全是真的。 不幸的是,我没有Iphone5实际设备进行测试。

- (BOOL) applePaySupported {
    return [PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkVisa, PKPaymentNetworkMasterCard]];
}

编辑/解决方案:

现在我使用这条线路,并验证其对于Iphone5(不支持)与Iphone6(支持)有效; 我认为其他设备也是如此。 我并不完全确定它是否始终在模拟器中工作,但无论如何,ApplePay在那里有点奇怪,最好在设备上进行测试。

- (BOOL) applePaySupported {
    return [PKPaymentAuthorizationViewController canMakePayments] && [PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkVisa, PKPaymentNetworkMasterCard]];
}
2个回答

11

canMakePayments - 无论卡片配置如何,都将返回“YES”(真/1)。

canMakePaymentsUsingNetworks - 如果卡未配置或未正确配置,则将返回“NO”。

所以,应该检查两者... 只有两者都为TRUE时,才需要使“Apple Pay”按钮可见。

希望这能帮到你。


我已经尝试了两个条件,但它总是返回 true,请告诉我该怎么办? - Gopal Devra

3
在 Swift 3.0 中,您可以通过这个函数检查您的设备是否支持 Apple Pay。如果返回 true,则表示您的设备支持 Apple Pay。以下是支持 Apple Pay 的设备列表:
- iPhone 5s(仅限购买最新版本)
- iPhone SE
- iPhone 6 或更高版本
- iPad Pro
- iPad 第五代
- iPad Air 2
- iPad mini 3 或更高版本
- 和 Apple Watch。
func applePaySupported() -> Bool {
            return PKPaymentAuthorizationViewController.canMakePayments() && PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: [.amex, .visa, .masterCard])
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接