如何在 iOS 10 中使用 Sirikit 自定义 SendPayment 意图的“MoneySent”意图 UI 屏幕
Posted
技术标签:
【中文标题】如何在 iOS 10 中使用 Sirikit 自定义 SendPayment 意图的“MoneySent”意图 UI 屏幕【英文标题】:How to customize "MoneySent" intent UI screen for SendPayment intent using Sirikit in ios 10 【发布时间】:2016-08-16 15:39:34 【问题描述】:我正在为支付域应用程序使用 SendPayment 意图。基本上,它显示两个屏幕:- 1) 送穆尼 2) 汇款
由于两个流程都显示了相同的意图视图控制器,任何人都可以分享一些技巧,如何通过“已发送货币”视图更改“汇款”意图视图。
另外,在苹果文档中,它被写入使用 childViewController,但想知道它必须在什么基础上像 configure 方法那样使用,intenthandlingstatus 总是“未定义”。
func configure(with interaction: INInteraction!, context: INUIHostedViewContext, completion: ((CGSize) -> Void)!)
// here interaction.intentHandlingStatus allways shows undefined
请提出建议。 谢谢
【问题讨论】:
SendPaymentIntent 对你有用吗? 是的。早些时候它不起作用。它要去互联网搜索。我找到了一种工作方式。您需要通过 paymentRecord 作为响应,然后它就会工作。 您介意提供一些示例代码吗? 【参考方案1】:我没有发现任何由 Apple 设置的变量来区分确认步骤和发送步骤。
但是,如果您的数据结构正确,则有一种方法可以间接地使其发挥作用。
Apple 要求您设置 PaymentRecord 并将其附加到 confirmSendPayment:completion 和 handleSendPayment:completion: 中的每个 IntentResponse:
我正在做的是在确认步骤中将付款状态设置为待处理,然后在处理步骤中设置为已完成。因此,我可以在 UI 扩展中使用以下代码来显示我正在执行的步骤的正确 UI:
INSendPaymentIntent *sendPaymentIntent = (INSendPaymentIntent *)interaction.intent;
INSendPaymentIntentResponse *sendPaymentResponse = (INSendPaymentIntentResponse *)interaction.intentResponse;
if (sendPaymentResponse.paymentRecord.status == INPaymentStatusPending)
// Confirm step
[self setupUI:sendPaymentIntent forView:self.previewView];
self.previewView.hidden = false;
self.completeView.hidden = true;
else if (sendPaymentResponse.paymentRecord.status == INPaymentStatusCompleted)
// Action performed step
[self setupUI:sendPaymentIntent forView:self.completeView];
self.previewView.hidden = true;
self.completeView.hidden = false;
【讨论】:
以上是关于如何在 iOS 10 中使用 Sirikit 自定义 SendPayment 意图的“MoneySent”意图 UI 屏幕的主要内容,如果未能解决你的问题,请参考以下文章
iOS12 SiriKit新特性 shortcuts(Objective-C版本)