【问题标题】:How can I open the Install Voices settings page in Objective C (iOS)如何在 Objective C (iOS) 中打开安装语音设置页面
【发布时间】:2021-06-29 08:20:32
【问题描述】:

我希望我的定制应用能够打开 iOS 原生设置页面,特别是用于将新声音安装到您的设备的设置。

如何在 Objective C 中做到这一点?

我看到您可以使用 UIApplicationOpenSettingsURLString 打开设置,但我需要转到用户当前语言的特定安装语音设置页面,如下所示:

此页面位于:设置 -> 辅助功能 -> 语音内容 -> 语音 ->(您的语言)

进入 Voices 页面,用户也可以在其中选择语言。

我想我可以尝试使用 open() 目标 C 函数来打开自定义 URI 方案,但我需要知道我需要确切的 URI 方案...

编辑:这是我目前正在尝试做的:

    NSString *voiceSettings = @"prefs:root=ACCESSIBILITY&path=SPEECH_TITLE#QuickSpeakAccents";
    NSString *cleanQuery = [voiceSettings stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: [NSString stringWithFormat:cleanQuery]] options:@{} completionHandler:nil];

但是它失败了:

Failed to open URL prefs:root=ACCESSIBILITY&path=SPEECH_TITLE#QuickSpeakAccents: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=229, _LSFunction=-[_LSDOpenClient openURL:options:completionHandler:]}

我错过了什么吗?

【问题讨论】:

  • 查看gist.github.com/deanlyoung/368e274945a6929e0ea77c4eca345560 尝试将prefs 替换为App-prefs,看看效果如何。
  • 由于 Gereon 的回答,我认为我唯一能想到的没有拒绝的选择是创建一个对话框屏幕,显示进入语音安装页面的步骤。老实说,我觉得这很荒谬且违反直觉。

标签: ios objective-c


【解决方案1】:

UIApplicationOpenSettingsURLString 是打开内置 Settings.app 的唯一支持方式。任何其他方法都是一种 hack,并且由于使用私有 API 存在审核被拒绝的风险。

参见例如Is it considered a private API to use App-prefs:root?

【讨论】:

  • 嗯,所以苹果不支持在外部打开设置内的任何其他页面,否则您的应用程序将被拒绝?这个用户友好度如何?或者我可以使用 UIApplicationOpenSettingsURLString 打开 Settings.app 中的其他页面吗?
  • 为什么文档中的任何地方都没有提到这一点?developer.apple.com/library/archive/featuredarticles/…developer.apple.com/documentation/uikit/uiapplication/… 也没有告诉我任何事情。关于开放系统 URI 方案的文档中没有这样的提及。或者如何打开系统应用页面。
  • AFAIK 除了UIApplicationOpenSettingsURLString 所做的之外,没有“合法”的方式可以在“设置”中打开任何内容。这一直是 Apple 的政策,除了提交增强请求之外,您无能为力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2017-12-03
  • 2017-02-28
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多