我问了一个问题
here,但答案指导我开一个新话题.很快,我想从我的应用程序在Appstore上推出一个免费的应用程序,但我想要启动的应用程序没有
URL Scheme.对我的另一个问题的评论是使用一些特殊的API,如SBSLaunchApplicationWithIdentifier或像
UIDocumentInteractionController这样的类可以实现.任何人都可以帮助我如何从我的应用程序启动应用程序.提前致谢
解决方法
让我先说这个方法只是越狱!它使用私人API,苹果可以在将来的版本中随时停止支持!
让我们来看看,这个方法使用[UIApplication launchApplicationWithIdentifier:suspended:] private方法:
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO];
从我所测试的调用此方法的方法不是以root身份运行的应用程序是无用的,显然SpringBoard(或LaunchServices)只允许root应用程序使用此方法启动其他应用程序.
所以,首先你需要越狱你的iPhone,然后你需要让你的应用程序以root身份运行.
要使您的应用程序以root身份运行,您需要将其放在/Applications/YourApp.app中,而不是通常的/User/Applications/UUID/YourApp.app.
您可以使用Cydia安装OpenSSH,并使用SSH访问手机的shell.
然后,在您的应用程序在正确的位置后,您需要设置权限,例如:
我会使用与Cydia相同的:
chown -R root:wheel /Applications/YourApp.app
接下来,一个小技巧.二进制将需要setuid bit:
chmod 4755 /Applications/YourApp.app/YourApp
而对于最后一步,SpringBoard不会使用setuid打开应用程序,但它会打开一个脚本(可以打开另一个应用程序)!只需将二进制文件的名称更改为像YourApp_:
mv /Applications/YourApp.app/YourApp /Applications/YourApp.app/YourApp_
并使用以下脚本在您的应用程序文件夹中创建一个名为YourApp的新文件:
#!/bin/bash CrrDir=$(dirname "$0") exec "${CrrDir}"/YourApp_
现在,只要回复(在Cydia有一个应用程序),你准备好了.
对不起,如果这似乎很难,不是,我不记得我在哪里学到了,但是很久以前.这种方法在所有iOS版本中都可以正常工作,而且我已经使用iOS 5.1进行了测试.
再次,如果您这样做,您的APP不会被苹果公司批准.