ios8 extension and container app how to share data
ios, ios-app-extension, ios8
Solution
My solution is edit the Info.plist of my custom keyboard:
NSExtension -> NSExtensionAttributes -> RequestsOpenAccess
Make it YES.
Then delete the keyboard in your device and re-add it. In your keyboard add page you will find a setting named "Allow Full Access", enable it and the keyboard will access the shared data.
Problem
I'm having trouble to share data between iOS 8 extension and container app. I set up the group from develop portal and Xcode, and my entitlements plist both look like: ``` <dict> <key>com.apple.security.application-groups</key> <array> <string>my group id</string> </array> </dict> ``` The suggested solution in apple document to use `[[NSUserDefaults standardUserDefaults]` doesn't work for me. I've tried the solution by @Santa Claus from this post Communicating and persisting data between apps with App Groups to use ``` [[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"]; ``` Santa Claus's solution worked on simulator but not on my iPhone 4s, any ideas on how to make it work on real device? Or am I missing anything? Some updates: ``` [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group id"]; ``` function returns url, and both urls from container app and extension look the same, as "path /private/var/mobile/Containers/Shared/AppGroup/3DFB9750-A9F3-4C37-BC3C-0D5BF746B233". I created a json file inside that folder from container app but extension can't find any file in the folder when I run on device. But in simulator it finds it well and everything works.