如何在 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版本)

如何在 iOS 10+ 中自定义通知的简短预览

ios10自定手势有啥用

iOS SiriKit:在意图“解决”和“处理”方法之间传递数据

sirikit

如何使用 FCM 在 ios 推送通知中播放自定义通知声音