![](/img/trans.png)
[英]Share UserDefaults between React Native app and Swift Share Extension
[英]Shared UserDefaults between app and extension not working correctly
因此,我一直在环顾四周,并按照所有步骤正确设置了共享的UserDefaults,但我应该缺少一些东西。
我在我的应用程序和扩展程序上都激活了应用程序组功能。 两者都使用相同的套件名称( "group.TestSharedPreferences"
),我这样写:
struct Preferences {
static let shared = UserDefaults(suiteName: "group.TestSharedPreferences")!
}
在viewDidLoad
:
Preferences.shared.set(1, forKey: "INT")
并阅读:
Preferences.shared.integer(forKey: "INT") // Returns 1 in Container App
Preferences.shared.integer(forKey: "INT") // Returns 0 in Today Extension
即使在设置"INT"
之后立即使用synchronize()
,在扩展名中检索到的值也不是保存在容器App中的值。 关于我可能会缺少的任何想法? 谢谢!
我建议在这里逐步进行挖掘。
首先,请确保主应用程序和窗口小部件扩展都启用了应用程序组功能,并使用相同的应用程序组功能并将其激活(必须设置选中标记)应用程序组名称:
今日小工具扩展:
然后使用直接设置/获取访问权限进行简单测试。 在主应用程序的AppDelegate.didFinishLaunchingWithOptions
方法中(根据需要更改应用程序组名称和键):
if let userDefaults = UserDefaults(suiteName: "group.de.zisoft.GPS-Track") {
userDefaults.set("test 1" as AnyObject, forKey: "key1")
userDefaults.set("test 2" as AnyObject, forKey: "key2")
userDefaults.synchronize()
}
在您今天的窗口小部件扩展的ViewController中:
if let userDefaults = UserDefaults(suiteName: "group.de.zisoft.GPS-Track") {
let value1 = userDefaults.string(forKey: "key1")
let value2 = userDefaults.string(forKey: "key2")
...
}
如果这可行,则问题必须与Preferences
单例相关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.