Shared UserDefaults between app and extension not working correctly

前端 未结 1 2011
别跟我提以往
别跟我提以往 2020-12-17 09:49

So I\'ve been looking around and following all the steps to setup shared UserDefaults correctly but I should be missing something.

I have App Groups capability activ

相关标签:
1条回答
  • 2020-12-17 10:20

    I would recommend to dig down step by step here.

    First, make sure that both the main app and the widget extension have app group capability enabled and use the same and activated (the checkmark must be set) app group name:

    Main App:

    Today Widget Extension:

    Then make a simple test with direct set/get access. In your main app's AppDelegate.didFinishLaunchingWithOptions method (change the app group name and the keys to your needs):

    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()
    }
    

    In your Today Widget Extension's ViewController:

    if let userDefaults = UserDefaults(suiteName: "group.de.zisoft.GPS-Track") {
        let value1 = userDefaults.string(forKey: "key1")
        let value2 = userDefaults.string(forKey: "key2")
        ...
    }
    

    If this works, the problem must be related in your Preferences singleton.

    0 讨论(0)
提交回复
热议问题