常にではありませんが (これは少しの間機能していました)、アプリ/拡張機能は、コンパニオン アプリとアプリ拡張機能の間のアプリ グループに設定されたフラグを読み取ることができない状態になります。この状態になる方法や値が異なる理由はわかりませんが、私のアプリケーションにとってこれらが常に同期していることが重要です。
コンパニオン アプリ viewDidLoad :
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
.....
[myAppSettings setBool:true forKey:@"myBool"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");
アプリ拡張 viewDidLoad
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");
コンソール出力
Companion app - bool TRUE
App extension - bool FALSE
また、コンパニオン アプリがバックグラウンドに入る前に同期します。ポータルなどでアプリ グループを設定しています。
私は何を間違っていますか?
編集
どうやら他の人もこの問題を抱えているようです: https://devforums.apple.com/message/977151#977151
「これは現在非常に問題があると思います。
時々、データ共有が機能し、その後変更が行われ、突然、ウィジェットが共有データを表示できなくなります (シミュレーターとデバイスの両方で)。
うっとうしいので、次のベータ版でもう少し信頼性が高まることを願っています!"
EDIT 2 別の人がこの正確な問題も報告しているようです:
「私も同じことに気付きました。これは NSUserDefaults だけでなく、コンテナー フォルダー内のすべてのファイルにも発生します。キーボード拡張機能は、しばらくキーボードを使用した後、コンテナー フォルダーへの読み取り/書き込み許可を突然失います。」
編集 3 さらなる証拠: https://devforums.apple.com/message/1028078#1028078
beta 3 にアップグレードした後、DB ファイルへのアクセスに失敗したため、キーボードでデータベースを開けないことがあることに気付きました。キーボードは以前にファイルにアクセスできました。
編集4
RequestsOpenAccess
これは、キーボードがフラグを失ったためと思われます。しかし、それを再現することはできず、確実に判断する方法はありません。
編集5
他の人が iOS8 GM ビルドでこれを報告しているようです:
この問題は、GM でも引き続き発生します。キーボードのクラッシュに関連しているようです..しかし、誰がどの順序でスイートを作成するかという点で、キーボードとそれを含むアプリの間にいくつかの競合があるようです. この問題は Apple 側にあると思います。私を信じてください、私はそれが私のせいであることを望んでいますが、私は試行錯誤に数え切れないほどの時間を費やしてきました. コードで何をして NSLog で検証しても、最終的にはこの状態になります。誰かが魔法の薬を見つけてくれることを願っています。:S
誰もこれを解決しましたか?