【问题标题】:Open Wifi Settings by "prefs:root=WIFI" failed in iOS 10在 iOS 10 中通过“prefs:root=WIFI”打开 Wifi 设置失败
【发布时间】:2017-02-08 12:00:09
【问题描述】:

我在我的应用程序中使用 prefs:root=WIFI url 方案,并在 info.plist 中输入了 prefs 以直接在 Wi-Fi 设置中打开 iOS 设置应用程序,它在 iOS 9 上运行良好,但在 iOS 9 上不再运行iOS 10。

有谁知道这只是第一次开发者预览中的回归,还是 iOS 10 中打开 Wi-Fi 设置的方式发生了变化,或者不再允许?

【问题讨论】:

  • prefs: URL 方案从未得到官方支持。
  • 但是我们的应用需要打开wifi设置。你知道其他 API 的工作原理吗?
  • App-Prefs:root=WIFI 适合我

标签: ios wifi ios10


【解决方案1】:

SWIFT 3.0:- 在 iOS 10 中运行

@IBAction func openWifiSetting(_ sender: AnyObject) {
    let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app
    UIApplication.shared.openURL(url!)
}

【讨论】:

  • 哇!我已经放弃了希望在 iOS 10.x 之后这是可能的。您是否有任何理由相信这样做会导致应用被 App Store 拒绝?
  • iOS11也可以
  • 这是应用商店指南所禁止的,我刚刚有一个应用因为这样做而被审核团队拒绝。 “您的应用使用“prefs:root=”非公共 URL 方案,这是一个私有实体。在 App Store 上不允许使用非公共 API,因为如果这些 API 发生变化,这可能会导致糟糕的用户体验。”
  • 我的也被拒绝了,经过几次更新。谁觉得这个答案有帮助 - 你应该意识到所有的风险。他们不只是拒绝,还加了一条注释:“在未来提交此应用时继续使用或隐藏非公开 API 可能会导致您的 Apple Developer 帐户被终止”
【解决方案2】:

iOS 10,打开您的应用设置:

if let settingsURL = URL(string: UIApplicationOpenSettingsURLString) {  
                UIApplication.shared.openURL(settingsURL)
          }

【讨论】:

  • 这会导致应用程序设置,但不会导致一般 iPhone 设置。
【解决方案3】:

使用“App-Prefs:root”而不是“prefs:root”

【讨论】:

  • “要解决此问题,请修改您的应用程序以使用公共 API 提供相关功能,或使用“prefs:root”或“App-Prefs:root”URL 方案删除该功能。”当我的应用被拒绝时,我得到了这个。
  • 我也是!我得到了同样的拒绝! (对于 > iOS11 你的答案是错误的!)
【解决方案4】:

这在 iOS 10 上运行良好,

转到目标 -->(应用程序)--> 信息 --> URL 类型 --> +

URL Schemes

偏好

然后调用,

- (void)openWifiSettings
{
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=WIFI"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
    }
}

【讨论】:

  • iOS 11 的任何解决方案??
  • 我也有同样的问题。
【解决方案5】:

很明确:Apple 不允许这样做。无论如何,您的应用可能会通过,但这与使用任何其他未记录的 API 相同。

Here is the full list 支持的 Apple URL 方案。

Here's a thread,其中 Apple 确认“任何未正式记录的 Apple URL 方案都应被视为私有 API。”

【讨论】:

  • 这是最重要的部分,其他答案可能会起作用,也可能会通过审查,但如果苹果指出这一点,那么这就是一个严重的问题。最好避免使用私有 API。
  • 我的应用也被这个 API 拒绝了。
【解决方案6】:

在 iOS 10 中为目标 c 试试这个

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
   [[UIApplication sharedApplication] openURL:url];
} else {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
}

【讨论】:

    【解决方案7】:

    我的应用程序也在使用该 API。不幸的是,苹果在 iOS 10 上禁用了此功能。这是我的解决方案:在 iOS 10 以下,它仍然可以打开设置应用程序。在 iOS 10 上,它会转到设置应用程序的子页面(蜂窝数据访问),您可以一键返回设置页面。我决定保留它。因为它仍然比用户手动打开设置应用程序方便。

    NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多