Apple Pay 弹出窗口未显示特定的默认送货地址
Posted
技术标签:
【中文标题】Apple Pay 弹出窗口未显示特定的默认送货地址【英文标题】:Apple Pay popup not showing with specific default shipping addresses 【发布时间】:2016-02-09 14:56:06 【问题描述】:我在法国并试图在我的应用中弹出 Apple Pay 表。 当我在“设置”中设置法国默认送货地址时,它可以工作。 (然后我可以切换到美国地址)
当我在“设置”中设置美国默认送货地址时,它有时会起作用,但经常会失败。当它失败时,Apple Pay 表根本不会显示。
(PKPaymentAuthorizationViewController
实例和PKPaymentRequest
实例是正确的,而不是nil
)
这很奇怪......
【问题讨论】:
隐含的问题是,“为什么不显示”。你能用相关的代码和任何可能提供线索的 lldb 控制台输出来改进这个问题吗?不知何故,工作和非工作情况之间的条件有所不同。当我看到明显的随机性时,我首先想到的是“竞争条件”。 你说得对,我只是做了一个简单的苹果支付代码,全部在主线程中,它可以工作。我会调查一下,找出问题所在。 【参考方案1】:找到了! 与具体地址无关!
以这种方式实现这个委托方法是行不通的
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didSelectShippingContact:(PKContact *)contact
completion:(void (^)(PKPaymentAuthorizationStatus,
NSArray<PKShippingMethod *> * _Nonnull,
NSArray<PKPaymentSummaryItem *> * _Nonnull))completion
completion(PKPaymentAuthorizationStatusSuccess, @[], _currentRequest.paymentSummaryItems);
(_currentRequest
是我用来弹出PKPaymentAuthorizationViewController
的PKPaymentRequest
,保存为实例属性)
我无法解释,但在完成中设置 PKPaymentAuthorizationStatusInvalidShippingPostalAddress
而不是 PKPaymentAuthorizationStatusSuccess
会起作用。
而且在我们调用completion的时候设置一个断点也会让Apple Pay sheet显示出来。
但是如果你仍然希望在完成方法中返回PKPaymentAuthorizationStatusSuccess
,那么使用它:
completion(PKPaymentAuthorizationStatusSuccess, nil, _currentRequest.paymentSummaryItems);
是的,将nil
值设置为nonnull
指定参数将起作用!
【讨论】:
以上是关于Apple Pay 弹出窗口未显示特定的默认送货地址的主要内容,如果未能解决你的问题,请参考以下文章
Google Pay 不显示总价或 displayItems [关闭]