公司项目里需要从应用内跳转到设置的Wi-Fi界面。之前在网上找过各种iOS版本的跳转方法,总还是可行的。
然而,升级iOS11后,所有的跳转URL均失效了,古哥一下(https://stackoverflow.com/questions/45316558/open-wifi-settings-by-using-openurl-with-param-app-prefsroot-wifi-do-not-work-i)、下载腾讯管家之类的跳转设置界面也都失效了。。。
还有好笑的是:https://forums.developer.apple.com/thread/65007,苹果官方说要移除这些URL,底下跟进回复说要fire掉什么人,哈哈哈,让我笑一会。
好了,言归正传。
还是从私有API入手,之前iOS10跳转的时候用了LSApplicationWorkspace这个私有类。
然后导出所有方法,其中发现一个叫做allInstalledApplications的方法。
该方法获取了所有设备上安装的程序,用LSApplicationProxy类表示。
SEL selector3 = NSSelectorFromString(@"allInstalledApplications");
id URLs = ((id (*)(id, SEL))[workSapce methodForSelector:selector3])(workSapce, selector3);
调用方法以后,得到了安装应用的数组,通过打印日志,发现了设置应用。
得到了设置应用的bundleID:com.apple.Preferences。
最后,调用openApplicationWithBundleID:方法,果然跳转到了设置界面:、
SEL selector4 = NSSelectorFromString(@"openApplicationWithBundleID:");
((void (*)(id, SEL, NSString *))[workSapce methodForSelector:selector4])(workSapce, selector4, @"com.apple.Preferences");
遗憾的是,目前还没有找到跳转到Wi-Fi设置界面的办法。
后续继续研究。。。
网友评论