[解決済み] iOS 10のシミュレータでXcode 8のSecItemAddは常にエラー-34018を返します。
質問
更新 : この問題は Xcode 8.2 で修正されました。キーチェーンの共有を有効にしなくても、シミュレータでキーチェーンが動作します。
なぜ私は
は常に
を呼び出すと、エラー -34018 が発生します。
SecItemAdd
機能
を呼び出すと、エラーが発生します。
?
再現のための手順
Xcode 8 で新しい Single page iOS app プロジェクトを作成します。
以下のコードを
viewDidLoad
(または
これ
Xcodeプロジェクトを開く)。
let itemKey = "My key"
let itemValue = "My secretive bee ????"
// Remove from Keychain
// ----------------
let queryDelete: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject
]
let resultCodeDelete = SecItemDelete(queryDelete as CFDictionary)
if resultCodeDelete != noErr {
print("Error deleting from Keychain: \(resultCodeDelete)")
}
// Add to keychain
// ----------------
guard let valueData = itemValue.data(using: String.Encoding.utf8) else {
print("???????????????????????????????????????? Error saving text to Keychain")
return
}
let queryAdd: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject,
kSecValueData as String: valueData as AnyObject,
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked
]
let resultCode = SecItemAdd(queryAdd as CFDictionary, nil)
if resultCode != noErr {
print("???????????????????????????????????? Error saving to Keychain: \(resultCode).")
} else {
print("???????????????????????????????????? Saved to keychain successfully.")
}
期待される成果
キーチェーンにアイテムが追加されます。
実績
関数SecItemAddは以下のエラーコードを返します。
-34018
.
バージョン
Xcode バージョン 8.1 (8B62)、macOS Sierra 10.12.1.
構成
ベータ 2 以降の Xcode 8 で、iOS 10 シミュレーターでのテスト時に常に発生します。
iOS 9.3 シミュレータでテストしているとき、Xcode 8 では発生しません。
デモ
https://dl.dropboxusercontent.com/u/11143285/2016/07/KeychainBugDemo.zip
参考文献
レーダー https://openradar.appspot.com/27422249
Apple Developer Forums。 https://forums.developer.apple.com/message/179846
この問題は、以下の投稿とは異なり、発生するのは 一貫して が Xcode 8 で発生するからです。 SecItemAddおよびSecItemCopyMatchingがエラーコード-34018 (errSecMissingEntitlement)を返す。
どのように解決するのですか?
私のアプリでは、この問題を回避するために キーチェーン・アクセス・グループ を Entitlements ファイルに追加することで回避できました。私は キーチェーンシェアリング スイッチをオンにしました。 機能 セクションにあるスイッチをクリックすると、私のところでも動作しています。
エンタイトルメントに追加する項目です。
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.evgenii.KeychainBugDemo</string>
</array>
macOS Sierra(10.12)でしか試していないので、10.11.5でうまくいくかどうかはわかりません。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み】Xcode 10 Error: 複数のコマンドが生成される
-
[解決済み] Xcodeエラー:SDK 'iOS 10.0'の製品タイプ 'Application'では、コード署名が必要です。
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
[解決済み] xcode-select active developer directory エラー
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] Swift 3でディスパッチキューを作成する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?