16

認証関連のストレージにキーチェーンを使用するiPhoneアプリがあります。

期限切れのプロビジョニングプロファイルもありました。

キーチェーンアクセスのドキュメントには、次のように記載されています。

iPhoneでは、キーチェーンの権限は、アプリケーションの署名に使用されるプロビジョニングプロファイルによって異なります。アプリケーションの異なるバージョン間で、同じプロビジョニングプロファイルを一貫して使用するようにしてください。

プロビジョニングプロファイルの有効期限が切れていたため、(プロビジョニングポータルで)更新してダウンロードし、ダブルクリックしてXCodeのオーガナイザーに「インストール」しました。

アプリのアップデートをアプリストアに送信した後、基本的に空のキーチェーンが表示されます(ユーザーは再度ログインするように求められます)。

私の質問は、アプリの署名に使用されるプロビジョニングプロファイルを更新すると、更新されたプロファイルを使用してアプリに更新を送信するときにキーチェーンアクセスに影響しますか?ドキュメントは「同じプロビジョニングプロファイル」を使用すると言っていますが、更新されたプロファイルがのプロファイルとしてカウントされるかどうかについては不明です(上記の私の経験が示唆しているように)。

何が得られますか?

アップデート

tcの答えの助けを借りて解決しました。embedded.mobileprovisionアップルに提出された各.ipasのファイルを見ると、期限切れの証明書とプロビジョニングプロファイルがアプリのバージョンxに署名するために使用され、別の証明書とプロビジョニングプロファイルがアプリのバージョンx + 1に署名するために使用されたことがわかりました(犯人:コード署名ID用のXCodeの「自動プロファイルセレクター」機能)。

最初の証明書とプロファイルは、開発者が別のiOS開発者プログラムアカウントを使用して無関係のアプリを開発したとき(同じマシン上で同じOSXユーザーを使用)から残っていました。複数のiOS開発者プログラムアカウントにまたがるプロビジョニングプロファイルは、明らかにすべて一緒にに保存されて~/Library/MobileDevice/Provisioning Profilesいるため、XCodeの自動プロファイル選択機能の候補になります。

期限切れの配布プロファイルの更新された/有効なバージョンと間違えたまったく異なる配布プロファイルを選択してコード署名IDを変更し、更新を送信しました。同じアプリ、異なる証明書、異なるプロビジョニングプロファイル==空のキーチェーン。D'OH。

4

3 に答える 3

19

使用が許可されているキーチェーンはkeychain-access-groups、エンタイトルメントで決定されkeychain-access-groupsます。これは、プロビジョニングプロファイルのサブセットに限定されます。これは、「バンドルシード」/「プレフィックス」/(ApplicationIdentifierPrefixプロビジョニングプロファイル)で決定されます。 「アプリID」で。

提出された古いアプリを保持している(または.ipaiTunesからのzipである)と仮定して、古いアプリembedded.mobileprovisionと新しいアプリの両方を確認します(less Foo.app/embedded.mobileprovisionターミナルでトリックを実行するか、テキストエディターで開くことができます)時々彼らは間違った行末を選ぶでしょうが)。あなたはこのようなものを探しています(push / iCloud用の追加のキーが表示される場合があります):

    <key>Entitlements</key>
    <dict>
            <key>application-identifier</key>
            <string>A1B2C3D4E5.com.example.MyApp</string>
            <key>get-task-allow</key>
            <false/>
            <key>keychain-access-groups</key>
            <array>
                    <string>A1B2C3D4E5.*</string>
            </array>
    </dict>

アプリが署名された実際の資格を表示することもできます。

codesign -d --entitlements - Foo.app/Foo | vis

IIRCのキーチェーンアクセスグループのデフォルトはegA1B2C3D4E5.com.example.MyAppですが、一致するものであれば、これを任意に設定できますA1B2C3D4E5.*(Xcode 4には優れたGUIエンタイトルメントエディターもあります)。バンドルプレフィックスが異なる場合は、問題が発生します。プッシュ/ゲームセンターなどを有効にしていない場合は、元に戻すことができると思います。

于 2012-11-09T20:24:39.597 に答える
8

アプリのバンドルIDが変更されない限り、キーチェーンに問題はありません。

私たち全員が毎年証明書と配布プロファイルを更新する必要があることを考えると、そうすることでアプリのキーチェーンアクセスが壊れた場合は混乱するでしょう。

AppStoreに4年以上存在しているアプリが1つあります。キーチェーンを使用します。何年にもわたって数回更新されており、プロビジョニングプロファイルが更新されています。キーチェーンの問題はありませんでした。

于 2012-11-09T18:38:56.387 に答える
1

他の人が検索している場合、私は別の問題を抱えていました。ipaを辞任するために私が行った手動の手順では、資格がありませんでした。つまり、キーチェーンにアクセスできませんでした。そこで、ipaを辞任するスクリプトを作成しましたが、資格は元の状態のままにしました。私はそれをhttp://baltaks.com/2013/08/resigning-enterprise-ios-appsに投稿し、必要に応じて更新し続けます。

于 2013-08-05T10:44:39.763 に答える