Откройте настройки iOS Touch ID программно
Мое приложение использует Touch ID, но если пользователь не включил его, в настоящее время я прошу его вручную открыть приложение "Настройки" и прокрутить вниз до элемента Touch ID.
Есть ли способ напрямую связать их со страницей настроек Touch ID, показанной ниже, из моего приложения?
(Обратите внимание, что я не хочу открывать приложение "Настройки" на верхнем уровне или открывать страницу собственных настроек приложения, как описано в разделе "Можно ли открыть приложение" Настройки "с помощью openURL?".)
Плагин Cordova был бы идеальным, но документация по любому системному вызову iOS была бы отличной.
3 ответа
К сожалению, невозможно открыть страницу Touch ID.
РЕДАКТИРОВАТЬ: Это было изменено снова под iOS 10, пожалуйста, проверьте ответы ниже.
Apple меняет способ открыть определенное меню в настройках. Значение схемы для iOS 10 - "App-Prefs:". Но, возможно, это будет изменено в следующих версиях.
Вы можете попытаться открыть разные URL в цикле. Помните, что константа UIApplicationOpenSettingsURLString не определена в iOS 7 (если вы поддерживаете эту версию).
Пожалуйста, посмотрите на мой код. Работает на iOS 10 и ниже.
// UIApplicationOpenSettingsURLString is available since iOS 8.0
NSString * defaultSettingsStr = ( &UIApplicationOpenSettingsURLString != NULL ? UIApplicationOpenSettingsURLString : @"prefs:root" );
// Array of possible URLs, differ in various iOS versions
NSArray * urlStrs = @[@"App-Prefs:root=TOUCHID_PASSCODE",
@"Prefs:root=TOUCHID_PASSCODE",
defaultSettingsStr];
for (NSString * urlStr in urlStrs) {
NSURL * url = [NSURL URLWithString:urlStr];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
// openURL is deprecated since iOS 10
[[UIApplication sharedApplication] openURL:url];
break;
}
}
Это работает для меня:
NSURL* url = [NSURL URLWithString:@"prefs:root=TOUCHID_PASSCODE"];
[[UIApplication sharedApplication] openURL:url];
редактировать: я думаю, что это работает только потому, что у меня установлено приложение (Launcher), которое зарегистрировало схему URL prefs. Вышеописанное работало только на устройстве, на котором не было установлено это приложение после того, как я зарегистрировал эту схему в своем собственном приложении, настроив CFBundleURLTypes в моем списке, выполнив следующие действия:
target -> Info -> URL Types -> (add) -> URL Schemes = "prefs"