Search code examples
iosobjective-cios8ios-app-extension

Communicating and persisting data between apps with App Groups


iOS 8 revealed a new API yesterday concerning App Groups. It was kind of messy before to share data and communicate between apps and I believe that's precisely what App Groups is intended to correct.

In my app I have enabled App Groups and added a new group but I just can't find any documentation on how to use it. Documentation and API references only state how to add a group.

So what is App Groups really intended to do? Is there any documentation somewhere on how to use it?


Solution

  • Another benefit to App Groups is the ability to share a NSUserDefaults database. This also works for App Extensions (notification center widgets, custom keyboards, etc).

    Initialize your NSUserDefaults object like this in all applications in the app group and they will share the database:

    Objective-C:

    [[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"];
    

    Swift:

    NSUserDefaults(suiteName: "<group identifier>")
    

    Keep in mind everything from the [NSUserDefaults standardUserDefaults] database for each application will not carry over into this database.

    The documentation gives a correct example as well (As of Beta 3).

    And don't forget to synchronize the database:

    [yourDefaults synchronize];