2014-10-17 16 views
6

hanno un problema con l'utilizzo di LocalAuthentication e di supporto iOS 7.0Importa LocalAuthentification.framework crash su iOS 7.1

quando sto cercando di

import LocalAuthentication 

Sto diventando incidente se bersaglio versione iOS è meno di 8.0.

ho cercato di segnare LocalAuthentication.framework come opzionale nelle fasi di creazione e disponibilità classe di controllo chiamando:

var isTouchIDSupported: Bool { 
     if let contextClass: AnyClass = NSClassFromString("LAContext") { 
      return LAContext().canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) 
     } 
     return false 
    } 

che non crash se io commento LAContext() stringa del tipo:

var isTouchIDSupported: Bool { 
      if let contextClass: AnyClass = NSClassFromString("LAContext") { 
       //return LAContext().canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) 
      } 
      return false 

}

si blocca nei primi secondi in cui l'app viene avviata se accedo a qualsiasi classe di LA (ad esempio LAContext) in qualsiasi posizione del mio codice. Cosa sto facendo di sbagliato qui?

registro Console per questo incidente:

dyld: Symbol not found: _objc_isAuto 
    Referenced from: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
    Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/lib/libobjc.A.dylib 
in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
+0

Stai utilizzando Swift? Quindi probabilmente dovrai creare un file di intestazione del bridge e importarlo lì. – user965972

+0

la risposta selezionata non ha effettivamente risolto la tua domanda. Puoi per favore pubblicare la risposta vera e propria contenente la soluzione. Soffro anche dello stesso problema. – harshitgupta

+0

Ho avuto lo stesso problema e ho cambiato "Link Framework Automaticamente" su NO.Non ha risolto il problema. Sei in grado di risolverlo? – DavidLiu

risposta

1

LocalAuthentication.framework è disponibile da iOS 8.0. [iOS Frameworks]

Per evitare la caduta in iOS 7, vai a 'obiettivi del progetto' -> 'Build Fasi' -> 'Link binari con le librerie' -> impostare lo stato di LocalAuthentication.framework a 'opzionale'

+0

terminato, ma è ancora in crash. Non si blocca solo quando ho rimosso LocalAuthentification.framework dalle fasi di compilazione/link binario con le librerie – iiFreeman

+0

Dato che il framework è disponibile da iOS 8 e non retrocompatibile, ci si aspetta che usi i suoi metodi solo per iOS 8. Si può, per esempio, mettere la chiamata al metodo tra questa condizione per evitare crash in sotto iOS 8. if ([[UIDevice currentDevice] systemVersion] floatValue]> = 8.0) {\\ Metodo LocalAuthentification chiama} –

+0

Il problema era nel flag delle impostazioni di compilazione "Link Frameworks Automaticamente" per usare la dichiarazione @import, dato che la cambio su NO, tutto ha iniziato a funzionare correttamente! – iiFreeman

1

in primo luogo ho segnato LocalAuthentification.framework come opzionale cambiato "link Framework automaticamente" NO quindi semplice controllo prima classe di accesso nel codice:

- (BOOL)isTouchIDSupported 
{ 
    if (NSClassFromString(@"LAContext")) { 
     return [self.context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]; 
    } 
    return false; 
} 

funziona bene per m e, spero che possa aiutare qualcuno

+0

Non funziona. Ricevo ancora: dyld: Simbolo non trovato: _objc_isAuto – akw

+2

Hai provato a sostituire @import LocalAuthentication con #import ? – iiFreeman

4

Questo sembra essere un bug nel simulatore. Do non scegli iPhone 5s (7.1). Se si utilizza iPhone 5 (7.1) e si contrassegna lo LocalAuthentification.framework come Opzionale funziona. (collegamento quadro automaticamente a NO pure)

Stesso problema per iPad Air (7.1), ma è possibile utilizzare l'opzione ridimensionabile iPad/iPhone, che funziona.

1

Provare a importare in modo condizionale il framework LocalAuthentication e tutto il codice associato con le direttive pre-processore. Sarai quindi in grado di eseguire simulatori e dispositivi iOS 7.x tramite Xcode.