【问题标题】:iOS 10 beta: URL scheme is not working but works in iOS 9iOS 10 测试版:URL 方案不起作用,但在 iOS 9 中有效
【发布时间】:2016-10-23 22:27:42
【问题描述】:

在一种特定情况下,我将用户带到密码设置页面。以下是用于此的代码 -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=PASSCODE"]];

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

谁能帮我解决这个问题。提前致谢。

【问题讨论】:

  • 在一段时间内不允许打开您自己的应用偏好之外的偏好页面。似乎在 iOS 10 中,Apple 进一步强制执行了此限制。
  • 谢谢,@Paulw11。由于我的客户正在等待这个,如果你也能提供更多关于这方面的细节,我将不胜感激,这样我就可以向我的客户解释同样的事情。
  • 首选项 URL 在 iOS 5.1 中被移除。我很惊讶你的代码一直在工作 - stackoverflow.com/questions/8246070/…
  • 确实,这在我链接到的答案中进行了讨论,但这不是你想要做的

标签: ios objective-c xcode ios10


【解决方案1】:

iOS 10 上的 prefs 方案已经改变,你可以使用这个:

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")!)
}

【讨论】:

    【解决方案2】:

    还没有。

    在 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];
    

    【讨论】:

    • 如果提到了这个规则,你能把苹果审查过程的链接发给我吗,因为当我浏览他们关于审查过程的文档时,我找不到这个。
    • 抱歉没有相关链接。 App Store 审核小组给我打了电话解释它,和你一样,我问规则在哪里,在审核指南中还是在其他地方?他们只是说,这是规则,它没有写在任何地方,这就是为什么我给你打电话告诉你这是一个新规则,这个规则不会公开,至少现在不公开。顺便说一句,这真是一个糟糕的电话,感觉就像“我是你爸爸,这是规则,因为我说这是规则”。
    • 啊,老苹果。自 2007 年以来让他们的客户受苦。
    • 这并不是一个真正的新规则,因为它属于规则 2.5.1:应用程序只能使用公共 API。问题是五月,应该是必须的;-)。
    • 2016年底有解决方案吗?
    【解决方案3】:

    在 iOS 10 上,您可以改用 openURL:options:completionHandler:

    您也可以查看这篇文章 (openURL Deprecated in iOS 10) 了解更多详情。

    【讨论】:

    • 感谢链接,但似乎没有解决任何问题
    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多