在iOS 10中,通过"prefs:root = WIFI"打开Wifi设置失败

tba*_*ago 18 wifi ios ios10

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

有谁知道这只是第一个开发者预览中的回归,还是在iOS 10中打开Wi-Fi设置的方式已经改变,或者不再允许这样做?

Luk*_*uke 21

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

以下是支持的Apple URL方案的完整列表.

以下是 Apple确认"任何未正式记录的Apple URL方案应被视为私有API"的主题.


Sid*_*ain 13

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!)
}
Run Code Online (Sandbox Code Playgroud)

  • 哇!我已经放弃了希望,这可以在iOS 10.x之后发布.您是否发现任何理由相信这样做会让App Store拒绝该应用? (2认同)
  • 这是应用程序商店指南所禁止的,我刚刚审核团队拒绝了这样做的应用程序."您的应用使用"prefs:root ="非公共URL方案,这是一个私有实体.在App Store上不允许使用非公共API,因为如果这些API发生变化,可能会导致糟糕的用户体验". (2认同)

ron*_*nan 6

我的应用程序也使用该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]];
}
Run Code Online (Sandbox Code Playgroud)


小智 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"]];
}
Run Code Online (Sandbox Code Playgroud)