以编程方式打开 iOS Touch ID 设置

Open iOS Touch ID settings programatically

我的应用使用 Touch ID,但如果用户尚未启用它,我目前要求他们手动打开“设置”应用并向下滚动到 Touch ID 项。

有没有办法直接从我的应用中link他们进入下面显示的 Touch ID 设置页面

(请注意,我不想在顶层打开“设置”应用,也不想按照 is it possible to open Settings App using openURL? 中所述打开应用的本机设置页面。)

Cordova 插件是理想的选择,但任何 iOS 系统调用的文档都很棒。

很遗憾,无法打开 Touch ID 页面。

编辑: iOS10 下再次更改,请检查下面的答案。

这对我有用:

 NSURL* url = [NSURL URLWithString:@"prefs:root=TOUCHID_PASSCODE"];
 [[UIApplication sharedApplication] openURL:url];

编辑:我认为这只是因为我安装了一个已注册首选项 URL 方案的应用程序(启动器)。在我通过执行以下操作在我自己的应用程序中配置 CFBundleURLTypes 在我自己的应用程序中注册此方案后,以上仅适用于未安装此应用程序的设备:

target -> Info -> URL Types -> (add) -> URL Schemes = "prefs"

Apple 更改了在“设置”中打开特定菜单的方式。 iOS 10 的方案值为 "App-Prefs:"。但也许它会在下一个版本中改变。

您可以尝试循环打开不同的网址。 请记住常量 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;
   }
}