ここの公式ドキュメントに従って、Parse アプリケーションと iOS Today 拡張機能の間でローカル データ共有を有効にしました。適切なキー チェーンとアプリ グループを使用してAppDelegate
、アプリと拡張機能のメソッドの両方で必要な初期化呼び出しを行います。viewDidLoad
のdidFinishLaunchingWithOptions
メソッドではAppDelegate
:
[Parse enableLocalDatastore];
[Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.my.app"];
[Parse setApplicationId:@"appId" clientKey:@"clientKey"];
viewDidLoad
私の拡張の方法では:
// Ensure Parse is only initialized once, otherwise an exception will be thrown
if(![Parse isLocalDatastoreEnabled]) {
[Parse enableDataSharingWithApplicationGroupIdentifier:@"group.com.my.app"
containingApplication:@"com.my.app"];
[Parse enableLocalDatastore];
// Setup Parse
[Parse setApplicationId:@"appId"
clientKey:@"clientKey"];
}
拡張機能でクエリを作成できましたが、ログに記録された状態で開始し、アプリに移動してログアウトを発行すると[PFUser currentUser]
、拡張機能で非 nil のままであることに気付きました (まだ currentUser の情報にアクセスできます)。逆に、ログアウトした状態で開始した場合、アプリに移動し、ログインして拡張機能に切り替えても、[PFUser currentUser]
nil のままです。
のログオン ステータスの変更がPFUser
アプリとその拡張機能間で同期されない理由について何か考えはありますか?
isLocalDatastoreEnabled
チェックを無効にした場合、ウィジェットはその後の呼び出しごとにクラッシュしますが、リロードされると、少なくとも の状態がcurrentUser
同期されるため、これはすべて非常に不可解です。