2014-10-17 28 views
6

Có một vấn đề với việc sử dụng của LocalAuthentication và hỗ trợ iOS 7.0nhập LocalAuthentification.framework treo trên iOS 7.1

khi tôi đang cố gắng để

import LocalAuthentication 

Tôi nhận được tai nạn nếu mục tiêu iOS phiên bản thấp hơn 8.0.

tôi đã cố gắng để đánh dấu LocalAuthentication.framework như tùy chọn trong việc xây dựng giai đoạn và lớp kiểm tra tính sẵn sàng bằng cách gọi:

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

nó không sụp đổ nếu tôi nhận xét LAContext() chuỗi như:

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

}

nó bị treo ở những giây đầu tiên ứng dụng được khởi chạy nếu tôi truy cập vào bất kỳ lớp LA (LAContext ví dụ) ở bất kỳ nơi nào trong mã của tôi. Tôi đang làm gì sai ở đây?

điều khiển log cho vụ tai nạn này:

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

Bạn đang sử dụng Swift? Sau đó, bạn có thể phải tạo một tập tin tiêu đề cầu và nhập nó ở đó. – user965972

+0

câu trả lời đã chọn không thực sự giải quyết được câu hỏi của bạn. Bạn có thể xin vui lòng gửi câu trả lời thực tế có chứa các giải pháp. Tôi cũng bị cùng một vấn đề. – harshitgupta

+0

Tôi đã gặp sự cố tương tự và đã thay đổi "Liên kết khung tự động" thành NO.Nó không giải quyết được vấn đề. Bạn có thể sửa nó không? – DavidLiu

Trả lời

1

LocalAuthentication.framework có sẵn từ iOS 8.0. [iOS Frameworks]

Để tránh những tai nạn trong iOS 7, vào 'Mục tiêu dự án' -> 'Xây dựng giai đoạn' -> 'Liên kết Binary với Libraries' -> sửa status LocalAuthentication.framework để 'Tùy chọn'

+0

đã hoàn tất nhưng vẫn bị lỗi. Nó không chỉ bị treo khi tôi xóa LocalAuthentification.framework từ giai đoạn xây dựng/liên kết nhị phân với các thư viện – iiFreeman

+0

Vì khung có sẵn từ iOS 8 và không tương thích ngược, bạn sẽ chỉ sử dụng các phương thức của nó cho iOS 8. Bạn có thể đặt các cuộc gọi phương thức giữa tình trạng này để tránh tai nạn ở dưới iOS 8. if ([[[UIDevice currentDevice] systemVersion] floatValue]> = 8,0) {\\ phương pháp LocalAuthentification cuộc gọi} –

+0

vấn đề là trong xây dựng thiết lập cờ "Liên kết Khung Automatically" để sử dụng câu lệnh @import, vì tôi thay đổi nó thành NO, tất cả bắt đầu hoạt động bình thường! – iiFreeman

1

trước tiên tôi đánh dấu LocalAuthentification.framework như bắt buộc thay đổi "Liên kết khung Automatically" để NO séc sau đó đơn giản trước khi đến lớp truy cập vào mã:

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

trình tốt cho m e, hy vọng rằng sẽ giúp ai đó

+0

Không hoạt động. Tôi vẫn nhận được: dyld: Không tìm thấy biểu tượng: _objc_isAuto – akw

+2

Bạn đã cố thay thế @import LocalAuthentication bằng #import chưa? – iiFreeman

4

Điều này có vẻ là một lỗi trong trình mô phỏng. Làm không chọn iPhone 5s (7.1). Nếu bạn sử dụng iPhone 5 (7.1) và đánh dấu LocalAuthentification.frameworkTùy chọn hoạt động. (Liên kết Khung Tự động để NO cũng)

Cùng một vấn đề cho iPad Air (7.1), nhưng bạn có thể sử dụng tùy chọn iPad/iPhone Resizable, mà làm việc.

1

Hãy thử nhập có điều kiện khung LocalAuthentication và tất cả mã được liên kết với chỉ thị trước khi xử lý. Sau đó, bạn sẽ có thể chạy các trình mô phỏng và thiết bị iOS 7.x thông qua Xcode.

Các vấn đề liên quan