2014-10-17 11 views
6

7,0आयात LocalAuthentification.framework आईओएस 7.1 पर दुर्घटनाओं

जब मैं

import LocalAuthentication 

कोशिश कर रहा हूँ लक्ष्य iOS संस्करण कम है अगर मैं दुर्घटना हो रही है LocalAuthentication और समर्थन आईओएस के उपयोग के साथ एक समस्या है 8.0 से

मैं के रूप में वैकल्पिक निर्माण चरणों में और जांच वर्ग उपलब्धता फोन करके LocalAuthentication.framework चिह्नित करने के लिए करने की कोशिश की:

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

अगर मैं LAContext टिप्पणी() स्ट्रिंग की तरह यह दुर्घटना नहीं है:

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

}

यह मेरे कोड के किसी भी स्थान पर एलए क्लास (उदाहरण के लिए LAContext) तक पहुंचने पर ऐप लॉन्च होने वाले पहले सेकंड में क्रैश हो जाता है। मैं यहाँ क्या गलत कर रहा हूँ? इस दुर्घटना के लिए

कंसोल लॉग:

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

क्या आप स्विफ्ट का उपयोग कर रहे हैं? तो आपको शायद पुल हेडर फ़ाइल बनाना होगा और इसे वहां आयात करना होगा। – user965972

+0

चयनित उत्तर वास्तव में आपके प्रश्न को हल नहीं किया था। क्या आप समाधान युक्त वास्तविक उत्तर पोस्ट कर सकते हैं। मैं भी एक ही समस्या से पीड़ित हूं। – harshitgupta

+0

मुझे एक ही समस्या थी, और "लिंक फ्रेमवर्क स्वचालित रूप से" को बदल दिया।इस मुद्दे को हल नहीं किया। क्या आप इसे ठीक करने में सक्षम हैं? – DavidLiu

उत्तर

1

LocalAuthentication.framework आईओएस 8.0 से उपलब्ध है। [iOS Frameworks]

iOS 7 में दुर्घटना से बचने के लिए करने के लिए 'परियोजना लक्ष्य' जाना -> 'के चरण का निर्माण' - 'वैकल्पिक' के लिए> सेट LocalAuthentication.framework की स्थिति

+0

किया, लेकिन यह अभी भी दुर्घटनाग्रस्त है। यह केवल तभी क्रैश नहीं होता है जब मैंने लाइब्रेरी – iiFreeman

+0

के साथ बिल्ड चरणों/लिंक बाइनरी से स्थानीय प्रमाणीकरण। फ्रेमवर्क को हटा दिया है, क्योंकि ढांचा आईओएस 8 से उपलब्ध है और पिछड़ा संगत नहीं है, इसलिए आप उम्मीद कर सकते हैं कि केवल आईओएस 8 के लिए इसकी विधियों का उपयोग करें। उदाहरण के लिए, आप नीचे आईओएस 8 में दुर्घटना से बचने के लिए इस स्थिति के बीच विधि कॉल करें। यदि ([[[[UIDevice currentDevice] systemVersion] floatValue]> = 8.0) {\\ स्थानीय प्रमाणीकरण विधि कॉल} –

+0

समस्या निर्माण सेटिंग ध्वज "स्वचालित रूप से लिंक फ्रेमवर्क" में थी @import कथन का उपयोग करने के लिए, क्योंकि मैंने इसे बदल दिया है, सभी ने ठीक से काम करना शुरू कर दिया है! – iiFreeman

1

- 'पुस्तकालय के साथ लिंक बाइनरी'> मीटर के लिए

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

वर्क्स ठीक: सबसे पहले मैं LocalAuthentification.framework वैकल्पिक रूप "स्वचालित रूप से लिंक फ्रेमवर्क" नहीं तो सरल जांच के लिए उपयोग कक्षा से पहले कोड में बदल चिह्नित ई, उम्मीद है कि किसी की मदद करेगा

+0

काम नहीं करता है। मुझे अभी भी मिलता है: dyld: प्रतीक नहीं मिला: _objc_isAuto – akw

+2

क्या आपने #import <स्थानीय प्रमाणीकरण/LocalAuthentication.h> के साथ @import LocalAuthentication को प्रतिस्थापित करने का प्रयास किया था? – iiFreeman

4

यह सिम्युलेटर में एक बग प्रतीत होता है। आईफोन 5 एस (7.1) चुनें। यदि आप आईफोन 5 (7.1) का उपयोग करते हैं और स्थानीय प्रमाणीकरण। फ्रेमवर्कवैकल्पिक पर काम करते हैं तो यह काम करता है। (लिंक फ्रेमवर्क स्वचालित रूप सेनहीं रूप में अच्छी तरह करने के लिए) iPad Air (7.1) के लिए

एक ही समस्या है, लेकिन आप आकार बदलने योग्य iPad/iPhone के विकल्प है, जो काम करता है का उपयोग कर सकते हैं।

1

स्थानीय प्रमाणीकरण ढांचे को सशर्त रूप से आयात करने और प्री-प्रोसेसर निर्देशों के साथ सभी संबंधित कोड आयात करने का प्रयास करें। फिर आप एक्सकोड के माध्यम से आईओएस 7.x सिमुलेटर और डिवाइस चलाने में सक्षम होंगे।

संबंधित मुद्दे