一般来说,越狱会自动安装一个Cydia的APP.
我们知道,一般开发者的App都在如下的路径内:
/var/mobile/Containers/Bundle/Application
下
数据(Data)的Bundle路径应该是:
/var/mobile/Containers/Data/Application
下
那么,这二者有什么区别呢.
上面的Bundle里面存放的是咱们工程内的一些资源.如拖进去的图片、音视频资源什么的.
而下面的Data是存放数据的.类似NSUserDefault里面存的一些数据.
如果判断有没有一个app(普通App).判断上面的Bundle里面存不存在即可.
然而.对于一些特殊的App.类似于系统App.他们存在的地方就不是这里了.因为他们具有更高的权限.所以在其他的目录里头.(对于越狱后"自动"安装的Cydia也在这个目录里头)
/Applications/
又由于越狱后,所有App都有了访问系统路径的权限…
那么.简单的检测是否越狱的代码就可以是.判断有没有这个App
let isJailbreak = FileManager.default.fileExists(atPath: "/Applications/Cydia.app")
反正咱们都有访问系统路径的权限…咱们也可以
FileManager.default.fileExists(atPath: "/Applications/Music.app")
对于未越狱的iOS(iPad OS)设备来说.咱们访问不了系统路径.返回的就是false了