Search code examples
iosobjective-cswiftios8ios-app-group

Share datas between two apps with iOS 8 App Groups (using NSUserDefaults)


I wonder if we can share datas between apps with the new iOS 8 feature : App groups (using NSUserDefaults) - Or if App Groups only share datas between the main app and its extension?

I actually enabled the App Groups feature on both of the apps that should share datas between them (they belong the same company). They also have the same App Groups thing (like group.com.company.myApp).

Here's the code on the first one (in Swift)

    NSUserDefaults.standardUserDefaults().setBool(true, forKey:"Bool")
    NSUserDefaults.standardUserDefaults().synchronize()

And here's the code on the second one (in Objective-C)

    NSUserDefaults *datas = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.company.myApp"];
    NSLog(@"%@", [datas boolForKey:@"Bool"]);

Sadly, the Bool always returns nil.

If anyone has a solution :)

Thanks


Solution

  • Check out this thread on the Apple Developer Forums: https://devforums.apple.com/message/977151#977151

    I believe that both instances need to use the group ID (initializing with initWithSuiteName:) or else they are reading/writing to different user defaults sets.

    So your Swift code would change to:

    var userDefaults = NSUserDefaults(suiteName: "group.com.company.myApp")
    userDefaults.setBool(true, forKey: "Bool")
    userDefaults.synchronize()