0

私の iOS アプリでは、Apple から提供された KeychainItemWrapper を使用して、アプリの重要なデータを保存しています。

開発者プロビジョニング プロファイルを使用してモバイルにアプリを展開すると、アプリは正常に動作しますが、「配布」プロファイル アプリを使用して配布ビルドを作成して同じアプリを展開すると、アプリがクラッシュします。

デバイス ログを分析しましたが、問題を特定できませんでした。「writeToKeyChain」メソッドがクラッシュします。これがディストリビューション プロファイル ビルドでのみ発生する理由を見つけることができません。

なぜこれが起こっているのですか?以前にこの問題に直面した人はいますか?

iOS : 9.3.1
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY


  CoreFoundation                    0x1817fee38 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x180e63f80 objc_exception_throw + 56
2   CoreFoundation                  0x1817fed08 +[NSException raise:format:arguments:] + 108
3   Foundation                      0x182184124 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112
4   MyApp                           0x10017fe6c -[KeychainItemWrapper writeToKeychain] (KeychainItemWrapper.m:328)
5   MyApp                           0x10017f1c4 -[KeychainItemWrapper setObject:forKey:] (KeychainItemWrapper.m:177)
6   MyApp                           0x1000c61cc +[MyKeyChainWrappper fetchInfo:] (MyKeyChainWrappper.m:41)

編集:

KeychainItemWrapper 初期化コード

 KeychainItemWrapper* mykeyChain = [[KeychainItemWrapper alloc]    initWithIdentifier:@"My_Identifier" accessGroup:[[NSBundle mainBundle]    bundleIdentifier]];


  [mykeyChain setObject:(__bridge id)(kSecAttrAccessibleWhenUnlocked) forKey:(__bridge id)(kSecAttrAccessible)];
4

1 に答える 1

0

問題はアクセス グループにあります。を使用しています[[NSBundle mainBundle] bundleIdentifier]。これは有効なアクセス グループではありません。アクセス グループは AppID で始まる必要があります。KeychainItemWrapperこれを (サンプル コードのように) ハードコーディングするか、実行時にクエリを実行できます。

于 2016-05-14T16:22:41.060 に答える