問題タブ [ios-app-group]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - アプリ グループを使用してコア データを複数のアプリ (拡張機能だけでなく) と共有し、破損したコア データ ストアを回避するにはどうすればよいですか?
新しいアプリ グループ機能を使用してコア データ ストアを拡張機能と共有する iOS 8 アプリを作成しました。非常にうまく機能したので、アプリ グループ コンテナー内のコア データ ストアを共有する 2 つの個別のアプリで試してみようと思いました。しかし、アプリと拡張機能の間では機能していましたが、2 つのアプリと共有するとコア データ ストアが破損するという問題が発生します。
2 つのアプリを開く順序に応じて、さまざまなエラーが発生します。
フェッチにより、次のエラーが発生します。
CoreData: エラー: (522) /private/var/mobile/Containers/Shared/AppGroup/[…].sqlite のデータベースの I/O エラー。SQLite エラー コード:522、「エラーではありません」</p>
保存すると、次のエラーが発生します。
CoreData: エラー: (11) 致命的なエラーです。/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite のデータベースが破損しています。SQLite エラー コード:11、「データベース ディスク イメージの形式が正しくありません」</p>
または:
コア データ: エラー: -executeRequest: 例外が発生しました = SQL 実行中にエラーが発生しました: PRIMARY KEY は userInfo = { NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite"; で一意である必要があります。NSSQLiteErrorDomain = 19; CoreData: エラー: (19) PRIMARY KEY は一意でなければなりません
ios - WatchKit 拡張機能内でアプリ グループが機能しないのはなぜですか?
ホスト アプリとアプリ拡張機能の間で NSUserDefaults データを共有することに関する SO の他のすべての投稿を見てきましたが、私のものはまだ機能しません。ここに私がやったことすべてがあります:
- 拡張機能とホスト アプリの Xcode の [機能] タブでアプリ グループを有効にします。
- グループ名を「group.com.mycompany.foo」に設定し、拡張機能とホストアプリがグループに追加されていることを確認します。
- 「com.apple.security.application-groups」キーがアプリ グループ名に設定された両方の権限ファイルが存在することを確認しました。(価値があるのは、拡張機能とホストアプリの間で共有キーチェーン機能も使用していて、それが機能しているため、これが資格の問題であるとは思わないことです)
- すべてのプロビジョニング プロファイルを再生成しました。実際、アプリ グループを設定した後、すべての証明書を取り消して、すべてのプロファイルを再生成しました。
結局のところ、このコードはまだ機能しません。
その後:
その結果:
Xcode の環境設定を見ると、次のアイコンに気付きますが、「アプリ グループ」アイコンはありません。
しかし、前に述べたように、アプリ グループをセットアップした後、キーチェーン、証明書、およびプロビジョニング プロファイルをクリアするところまで行きました。これが実際に問題である場合、資格をプロファイルに追加するにはどうすればよいですか?
私は何が欠けていますか?私はアイデアから新鮮です。
ヘルプ?
編集: アクセス グループは、WatchKit 拡張機能ではなく、Today & Safari 拡張機能で機能しています。理由はわかりませんが、すべてのビルド設定が同じように構成されているようです。
編集 2 : 私の機能が適切に設定されていないと主張する人のために、ここにスクリーンショットがあります:
iphone - WatchKit 拡張機能で、アプリ グループの NSUserDefaults への更新が表示されない
これに関するいくつかの質問を見て、提供されたすべての回答を試しましたが、まだうまくいきません。
iPhone アプリとその WatchKit 拡張機能の間でいくつかの小さなデータ (文字列と BOOL) を共有しようとしています。(違いがある場合、情報は WK アプリの GlanceController によって読み取られています)
開発者サイトからアプリ グループ (group.com.theYawns.Sorcerers-Apprentice) を作成しました。「アプリ ID」を見ると、アプリ用に 2 つの同一の ID (com.theYawns.Sorcerers-Apprentice) と拡張用に 1 つ (com.theYawns.Sorcerers-Apprentice.watchkitextension) があるように見えます。これらのそれぞれで「アプリ グループ」が有効になっており (開発と配布の両方で)、アプリ ID を編集するとアプリ グループが選択されます。
アプリと拡張機能の両方の機能で「アプリ グループ」をオンにしました。ビルドごとではなく、1 日に数回、[機能] タブにアクセスして見ると、資格ファイルに「アプリ グループを追加する」資格を示す赤い感嘆符が表示されます。資格ファイルを見ると資格があり、[問題を修正] をクリックすると赤い感嘆符がチェックマークに変わります。しかし、これを 1 日に複数回行う必要があるという事実は、何かがおかしいのではないかと懸念しています。
XCode の設定でプロビジョニング プロファイルを何度も更新しましたが、資格の下にアプリ グループのアイコンが表示されませんが、ホバーすると表示されるツールチップにアプリ グループが表示されます。
私のアプリと拡張機能の両方で、ユーザーのデフォルトへの参照を取得します
[sharedAppDefaults synchonize]
また、フラッシュされていない場合に備えて、各書き込みの後、WatchKit が読み取りを試みる前にa を追加しようとしました。(違いはありませんでした)。
私の WatchKit 拡張バンドル ID は、別のスレッドで見た回答の 1 つである iPhone アプリ バンドル ID とは異なります。
また、10 秒ごとにグランスを更新する NSTimer を追加したので、変更の取得にタイミングの問題があった場合は、更新サイクル 1 つか 2 つ後に自動的に解決されると思いますが、そうではありません。
本当に困惑しています...他のスレッドからの回答によって他の人が問題を解決したようですが、私にとってはうまくいきませんでした。
私が検索した他のスレッドは次のとおりです。
ios - 起動済みのアプリで共有グループにデータを移動する
私のアプリは既に App Store にありますが、現在、Apple Watch 拡張機能を作成しています。これは、Shared Group
.
アプリを既にダウンロードしている顧客が新しい更新プログラムを初めて起動したときに、現在保存されている場所 ( Core Data
& )からデータを移動するにはどうすればよいですか?UserDefaults
これを行うための最も効率的でリソースの消費が最も少なく、古いユーザーが新しい更新プログラムを初めて開いたときにのみ行う方法は何ですか?
ios - WatchKit はアプリ グループを使用してデータを保存します
Apple Watch の準備をするためにアプリに取り組んでいます。PFUser
私は自分のアプリで Parse を使用しています。ユーザーが自分の時計でログインできるようにする代わりに、iPhone からのデータを使用したいだけです。ログインしている場合は、現在使用している iPhone を検出し、ログインしてPFUser
いない場合は、iPhone にログインするように促します。私の質問は、このためのデータの受け渡しを処理する最良の方法は何ですか? NSUserDefaults
またはApp Groups
?