OSStatus-Fehler-code -34018
Ich bin mit SecItemCopyMatching
Zugriff auf die iOS-keychain. Über 1 in eine hundert mal bekomme ich eine -34018
Ergebnis-code direkt nach dem Relaunch der app aus dem hintergrund. Die Dokumentation Staaten:
Den zugeordneten Fehler Platz für Schlüsselbund-Dienste ist nicht zusammenhängend:
-25240 durch -25279 und -25290 durch -25329. Keychain-Element
Dienste können auch return noErr (0) oder paramErr (-50), oder CSSM Ergebnis
codes
So scheint es, dass -34018
ist ein 'CSSM Ergebnis-code'. Ich habe den vorgeschlagenen link aber konnte Sie nicht finden Ergebnis-codes.
Was es die -34018
Ergebnis-code? Wie bekomme ich mehr zuverlässige Schlüsselbund?
- (NSData *)getKeychainData:(NSString *)key
{
NSDictionary *query = @{
(__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword,
(__bridge id)kSecAttrService:SEC_ATTR_SERVICE,
(__bridge id)kSecAttrAccount:key,
(__bridge id)kSecReturnData:@YES
};
CFDataRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if(status == errSecItemNotFound) {
return nil;
}
if(status == noErr) {
return CFBridgingRelease(result);
} else {
[self logError:[NSString stringWithFormat:@"SecItemCopyMatching status %d", (int)status] :nil];
return nil;
}
}
Geschützt sind Daten verfügbar, wenn dies geschieht?
Keine urheberrechtlich geschützten Daten zur Verfügung stehen. Für was es Wert ist, Schütze ich meine Daten mit
kSecAttrAccessibleWhenUnlockedThisDeviceOnly
.Es ist ein thread in dem dieses hier.
Schlüsselbund gesperrt werden könnte, bevor Sie Ihre app aktiv wird. Zwischen applicaitonWillEnterForeground und applicationDidBecomeActive Staaten gibt es einige Zeit lag. Sind Sie sicher, dass Sie sprechen Schlüsselbund nach app wird aktiv?
InformationsquelleAutor Randomblue | 2015-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gerade die Erforschung der gleiche Fehler.
Das wesentliche ist, dass der security-Dienst von apple verwendet, um zu kommunizieren mit dem Schlüssel-Kette, in seltenen Fällen, wenn der Benutzer das Gerät über wenig Speicher, Abstürze und wegnehmen der app Fähigkeit zu sprechen, die Schlüsselanhänger, die Ergebnisse der schreckliche -34018.
Dies ist nicht passiert, nur beim laufen durch Xcode wie manche vielleicht behaupten.
Dies ist den jüngsten Daten, die zur Ausgabe entnommen aus der Apple-developer-Foren von einem Apple-Mitarbeiter:
Von einem Anderen Apple-Mitarbeiter:
Von einem Anderen Apple-Mitarbeiter auf Mar 22, 2016:
Leider gibt es keine bekannten Problemumgehungen und das Problem ist noch nicht behoben 9.3.2 Beta 1 (13F51a)
"Dies ist nicht passiert, nur beim laufen durch Xcode wie manche vielleicht behaupten." -> hast du eine Quelle für diese?
Wir reden über den Speicher des Geräts im Allgemeinen. Ihre app-Speicherverwaltung kann groß sein, aber es gibt immer noch eine chance, würden Sie erfolgt durch diese. Also, wenn der user hat ein paar apps öffnen (chrome mit ein paar tabs, E-Mails mit einem großen Posteingang etc'), die dazu führen können, dass der Dienst zum Absturz zu bringen. Bezüglich deiner zweiten Kommentar, die Quelle, die 5% unserer Nutzer, die die app aus dem Appstore. Viele andere Zeugnisse in den apple-Foren des 34018 passiert in der Produktion.
Aus Neugier, was ist deine app?
Wie ich schon sagte in einem anderen Kommentar unten, ich bin immer der Fehler in einem nicht-debug-Version in iOS-9.2. Was ich nicht verstehe ist, was andere große Anwendungen tun, wenn das Auftritt? Ohne den Zugang zu den Geheimnissen sollte es nicht möglich sein, die Authentifizierung mit dem backend und somit die app nicht gut funktionieren würde. Aber ich habe nicht gesehen, dieses Verhalten in anderen apps, bin ich etwas fehlt? Große apps nicht verwenden Schlüsselbund??!?!
InformationsquelleAutor Segev
Nach einigen Forschung, fand ich dies: http://opensource.apple.com/source/Security/Security-55471/sec/Security/SecBasePriv.h
So
-34018
isterrSecMissingEntitlement
und der Kommentar sagtErleben Sie diese Fehler beim ausführen von unit-tests? Wenn ja, könnte dies helfen: https://stackoverflow.com/a/22305193/171933
Dieses Problem auf github sagt, es scheint nur zu passieren, während das debugging in Xcode: https://github.com/soffes/sskeychain/issues/97 (siehe auch https://stackoverflow.com/a/28256591/171933)
Hoffentlich einige dieser wird helfen!
Das ist interessant.
Ich bekomme den Fehler auch in einer TestFlight-release mit iOS 9.2 auf einem iPhone 5s.
InformationsquelleAutor Johannes Fahrenkrug
Dieser code funktioniert bei mir:
Der Hauptunterschied mit OP ' s code ist die Zugabe von ein Generisches Attribut der Abfrage. Der Schlüsselanhänger Item Identifier ist der Standard von apple. Der Grund hinter dieser kommt zu unterscheiden möglich verschiedene Schlüsselanhänger Elemente von einander. Dies ist ein Weg, um eine mehr die keychain-Elemente, Zugriff auf mehr zuverlässig. Im Grunde, in anderen Worten, das macht Sie sicher, dass Sie Zugriff auf apples Standard-Schlüsselanhänger.
Ich habe bearbeitet die Antwort. Ich hoffe, Sie finden diese nützlich.
Danke für die Verbesserung Ihrer Antwort.
Jemanden brauchen, um Sie zu verschmelzen Apple-wrapper. Jeder Körper? gist.github.com/kristopherjohnson/5212625
InformationsquelleAutor flizana
Nach dem Versuch viele Updates in stack-überlauf, Dinge, die noch nicht für mich arbeiten.
Was funktionierte war das Umschalten der Schlüsselbund-Sharing-Funktion in Xcode. Gebaut und ausgeführt, und es funktionierte auf Anhieb.
InformationsquelleAutor zumzum