iOS 10 beta:URL方案不起作用,但适用于iOS 9

vij*_*esh 13 xcode objective-c ios ios10

在一个特定场景中,我将用户带到密码设置页面.以下是用于此的代码 -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=PASSCODE"]];
Run Code Online (Sandbox Code Playgroud)

升级到iOS 10测试版后,我不再使用设置密码页面而是终止应用程序.

任何人都可以帮我这个.提前致谢 .

Cro*_*ath 11

还没有.

iOS 10 beta 1发布前大约1个月,我的应用程序因打开Preference.app URL而被拒绝.应用程序审核小组给了我一个电话来解释它:现在不允许这样做:使用私有API.仅允许打开当前应用程序的设置页面(UIApplicationOpenSettingsURLString).

所以现在为什么他们拒绝了我真的很有道理.因为iOS 10以后没有人可以打开系统设置.

2016年12月8日更新的答案:

使用私有API(不要将带有这些代码的应用程序提交到App Store):

@interface PrivateApi_LSApplicationWorkspace
- (BOOL)openSensitiveURL:(id)arg1 withOptions:(id)arg2;
@end

PrivateApi_LSApplicationWorkspace* _workspace;

_workspace = [NSClassFromString(@"LSApplicationWorkspace") new];

BOOL result = (BOOL)[_workspace openSensitiveURL:[NSURL URLWithString:@"Prefs:root=YOURSETTINGURLHERE"] withOptions:nil];
Run Code Online (Sandbox Code Playgroud)

  • 对不起,没有关于它的链接.App Store评论小组给了我一个电话来解释它,就像你一样,我在评论指南或其他地方询问规则在哪里?他们只是说,这是规则,它不会写在任何地方,这就是为什么我给你打电话告诉你这是一个新规则,规则不会公开,至少现在不公开.顺便说一句,这真是一个可怕的电话,感觉就像"我是你的父亲这是规则,因为我说这是一个规则". (6认同)

小智 5

iOS 10 上的偏好设置已更改,您可以使用它:

if #available(iOS 10.0, *) {
    UIApplication.shared.open(URL.init(string:"App-Prefs:root= PASSCODE")!, options: [UIApplicationOpenURLOptionUniversalLinksOnly:true], completionHandler:{(success: Bool?) -> Void in}})
} else {
    // Fallback on earlier versions
    UIApplication.shared.openURL(URL.init(string:"Prefs:root= PASSCODE")!)
}
Run Code Online (Sandbox Code Playgroud)