ios - 在 sirikit 意图处理程序和应用程序之间传递数据

标签 ios swift siri sirikit

ios 不允许包含的应用程序和包含的扩展共享一个公共(public)容器,因此 UserDefaults 是建议的解决方案。

我已经尝试将 UserDefaults 与 sirikit 意图处理程序一起使用,假设处理程序的行为类似于扩展,如下所示:

在 IntentHandler.swift 中

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
shared?.set("saved value 1", forKey: "key1")
shared?.set("saved value 2", forKey: "key2")
shared?.set("saved value 3", forKey: "key3")

在 viewDidLoad 中的 ViewController.swift 中

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
if let temp1 = shared?.string(forKey:"key1")
{
contentLabel.text = temp1
}
if let value = shared?.string(forKey: "key2")
{
valueLabel.text = value
} 
if let key = shared?.string(forKey: "key3")
{
keyLabel.text = key
}

我可以在我的 ipad 屏幕上看到对应于 key1 和 key2 的字符串,但不能看到 key3,在代码中添加同步没有帮助。

这是我的问题:

1) sirikit 处理程序是否与其他扩展不同?如果是,如何将数据传递到我的应用程序?如果不是,我是否错误地使用了 UserDefaults?

2) 是否有更好的方法来处理应用程序及其扩展之间的 IPC,我只需要在它们之间传递简单的字符串消息。

使用 swift 3.0 和 xcode 8.2.1

最佳答案

检查您是否为要从中访问该组的所有目标启用了应用程序组。在“应用程序组”下 checkin 项目 -> 您的目标 -> 功能。

关于ios - 在 sirikit 意图处理程序和应用程序之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41735893/

相关文章:

ios - Siri 完整句子顺序,例如通过 WhatsApp 发送消息

ios - UILabel 缩小/扩展框架以适应自动布局中的文本?

swift - 分配与 UIPickerView 上显示的不同的输出值

iphone - 设置 UIPickerView 组件的范围

java - 如何通过authorization_code的授予类型登录apple(Java)

swift - 今天的扩展无法从继承 CoreMedia 权限

ios - 我可以使用 Siri Shortcut 更改变量值吗?

ios - 如何使用 Siri 快捷方式在我的应用程序中显示特定页面?

ios - SWRevealViewController 从 subview 推送

ios - 从导航 Controller 中删除除当前之外的所有 ViewController