我不是在发明轮子.在iOS8中,要从应用程序内部打开“设置”,我正在使用此代码:
BOOL canopenSettings = (&UIApplicationopenSettingsURLString != NULL); if (canopenSettings) { NSURL *url = [NSURL URLWithString:UIApplicationopenSettingsURLString]; [[UIApplication sharedApplication] openURL:url]; }
代码在stackoverflow中有很多答案和问题.
‘UIApplicationopenSettingsURLString’的地址不等于空指针的比较始终为true
有趣的是Apple在他们的示例代码中使用它:
https://developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html
关于如何避免警告并仍然检查我是否可以打开设置的一些想法?
解决方法
解决了:
该问题与应用程序中的部署目标有关.
如果目标是8.0或更高,则比较将始终为真,因为您总是超过8.0.所以我们不需要if验证:
NSURL *url = [NSURL URLWithString:UIApplicationopenSettingsURLString]; [[UIApplication sharedApplication] openURL:url];
另一种选择可以是:
NSURL *settings = [NSURL URLWithString:UIApplicationopenSettingsURLString]; if ([[UIApplication sharedApplication] canopenURL:settings]) { [[UIApplication sharedApplication] openURL:settings]; }