4
A
回答
6
試試這個:
- (BOOL)canAuthenticateByTouchId {
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
return [[[LAContext alloc] init] canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil];
}
return NO;
}
或類似@rckoenes建議:
- (BOOL)canAuthenticateByTouchId {
if ([LAContext class]) {
return [[[LAContext alloc] init] canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil];
}
return NO;
}
UPDATE
我忘了,看看這個:How can we programmatically detect which iOS version is device running on?定義SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
5
你應該考慮觸摸身份驗證所需的框架。
而參數LAErrorTouchIDNotAvailable
會顯示是設計支持這個功能。
代碼片段:
- (IBAction)authenticateButtonTapped:(id)sender {
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// Authenticate User
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Your device cannot authenticate using TouchID."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
}
尼斯教程來學習這個功能here。
0
此功能將有助於利用 -
-(BOOL)doesThisDeviceSupportTouchIdForLocalAuthentication{
//Checking for 64 bit (armv7s) architecture before including the LAContext as it would give error otherwise.
#if TARGET_CPU_ARM64
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]){
return YES;
}
return NO;
#endif
return NO;
}
3
您可以檢查使用CanEvaluatePolicy
錯誤。如果錯誤代碼是-6,則表示該設備上沒有物理Touch ID。你可以從錯誤描述中知道,它說
生物特徵不適用於此設備。
下面是如果你使用C#Xamarin代碼:
var context = new LAContext();
NSError AuthError;
if (!context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out AuthError))
{
if (AuthError != null && AuthError.Code == -6)
{
var alert = new UIAlertView ("Error", "TouchID not available", null, "BOOO!", null);
alert.Show();
}
}
0
目標C
@import LocalAuthentication;
// Get the local authentication context:
LAContext *context = [[LAContext alloc] init];
// Test if fingerprint authentication is available on the device and a fingerprint has been enrolled.
if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil])
{
NSLog(@"Fingerprint authentication available.");
}
+0
歡迎來到Stack Overflow! [如何回答](http://stackoverflow.com/help/how-to-answer)可以幫助你寫出將被接受和upvoted的答案。在你的情況下,代碼應該放在代碼塊中。 – zhon 2016-09-04 19:45:15
相關問題
- 1. Android設備如果不支持多點觸摸,有什麼辦法可以檢測多點觸摸嗎?
- 2. 使用觸摸ID保護設備的3D觸摸動作
- 3. Jquery hoverIntent/hover函數支持觸摸設備
- 4. 檢查iOS9設備是否支持3D觸摸並啓用
- 5. 在支持的設備上的Android多點觸摸
- 6. 查找設備支持的觸摸次數
- 7. 觸摸屏設備的「拖動」效果
- 8. 在蘋果設備上觸摸事件
- 9. 我如何找到我的android設備支持的最大觸摸次數
- 10. 觸摸設備的HTML API?
- 11. 觸摸屏測試設備
- 12. HTML和觸摸設備
- 13. 如何獲取nook簡單觸摸的設備ID?
- 14. 用觸摸設備觸發mousewheel事件
- 15. 瞭解Windows 8設備上支持多少個併發的觸摸點
- 16. 高級別的觸摸支持
- 17. 移動觸摸支持 - 在Closure庫
- 18. 獲取支持的觸摸點數
- 19. Android模擬器支持Windows觸摸屏
- 20. html5是否支持手機觸摸?
- 21. 的觸摸ID
- 22. 支持觸摸支持的硬件加速畫廊傳送帶
- 23. Xamarin表單 - 如何檢測設備是否是觸摸設備?
- 24. iOS8檢查設備是否有觸摸ID
- 25. 在非觸摸屏安卓設備上模擬觸摸屏
- 26. Qt for Symbian - 檢測觸摸/非觸摸設備
- 27. QML兼容性觸摸,觸摸N型和類型設備
- 28. onClick事件是否會觸摸觸摸屏設備?
- 29. 爲bb10,觸摸和非觸摸設備使用Phonegap
- 30. 下拉菜單在觸摸設備上保持打開狀態
更好地利用'如果([LAContext類]){'它代替檢查的系統版本。既然你有興趣,如果類是可用的,而不是真的在系統版本。您應該避免檢查系統版本,請檢查基礎版本或僅在類或方法可用時。 – rckoenes 2014-11-25 10:21:04
你說得對,我更新了答案。謝謝。 – Mateusz 2014-11-25 10:42:12
只需添加:這不會檢測設備是否具有TouchID功能。它僅檢查設備設置中是否啓用了TouchID。下面的Siti Kamaludin的答案更好。 – GeneCode 2017-07-05 03:20:21