native APP开发和web已经是很熟悉的套路了,但是最近几周看下来,有了更深入的了解,不由的感叹技术的研究是无止境的。
1、APP申请后台常驻权限:
只要在info.plist里声明使用audio play等权限,那么可以获得一定时间内后台生命。
在APP被切入后台时,在AppDelegate的
func applicationDidEnterBackground(_ application: UIApplication) {}
方法中,可以被触发,此时可以计算剩余的时间,在结束前再次申请使用资源,以此循环,可以无限后台运行;注意这里直接使用timeout定时任务在真机上出错,需要手写定时方法。
2、后台运行的APP调起其他应用
非常令人吃惊,后台运行的APP可以轻易的调起其他应用,甚至包括自己,这里是一个OC的方法,前提是需要知道目标APP的bundle identifier(bundle ID)
- (void)openAppByBundleID{
Class lsawsc = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];
// iOS6 没有defaultWorkspace
if ([workspace respondsToSelector:NSSelectorFromString(@"openApplicationWithBundleID:")])
{ [workspace performSelector:NSSelectorFromString(@"openApplicationWithBundleID:") withObject:@"com.xx.demo"]}
}
3、safari调起 APP
app包文件,查看内容,可以在info.plist的URL Type中,看到配置的短链接(可能有多个),浏览器可以直接通过短链接调起APP.
4、app下载lua脚本动态执行方法;
未完待续
5、app通过webview打开网页(注入UA),并分析dom;
6、检查其他APP的安装情况OC
(1)iOS 11及以上
- (void)getAppsOveriOS11{
NSBundle *container = [NSBundle bundleWithPath:@