Communicating and persisting data between apps with App Groups

ios, ios-app-extension, ios8, objective-c

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];

Problem

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?

Original source

Related problems