ilh*_*ctn 10 objective-c ipad ios
我在这里问了一个问题,但答案指导我开了一个新话题.不久,我想从我的应用程序在Appstore上启动一个免费的应用程序,但我想要启动的应用程序没有URL方案.关于我的另一个问题的评论说,使用一些特殊的API,如SBSLaunchApplicationWithIdentifier或类,如UIDocumentInteractionController使它成为可能.任何人都可以帮我如何从我的应用程序启动一个应用程序.提前致谢
fbe*_*rdo 16
我先说这种方法只是越狱!它使用私有API,Apple可以在将来的版本中随时停止支持!
让我们来看看,这个方法使用[UIApplication launchApplicationWithIdentifier:suspended:]私有方法:
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO];
Run Code Online (Sandbox Code Playgroud)
从我测试的那个调用这个方法的应用程序不是以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
Run Code Online (Sandbox Code Playgroud)
接下来,一个小技巧.二进制文件需要setuid位:
chmod 4755 /Applications/YourApp.app/YourApp
Run Code Online (Sandbox Code Playgroud)
最后一步,SpringBoard不会使用setuid位打开应用程序,但会打开一个脚本(可以打开另一个应用程序)!只需将二进制文件的名称更改为YourApp_:
mv /Applications/YourApp.app/YourApp /Applications/YourApp.app/YourApp_
Run Code Online (Sandbox Code Playgroud)
使用以下脚本在app文件夹中创建一个名为YourApp的新文件:
#!/bin/bash
CrrDir=$(dirname "$0")
exec "${CrrDir}"/YourApp_
Run Code Online (Sandbox Code Playgroud)
现在,只是呼吁(在Cydia有一个应用程序),你准备好了.
对不起,如果这看起来很难,但事实并非如此,我不记得我在哪里学到它,但这是很久以前的事了.这种方法适用于所有iOS版本,我刚刚使用iOS 5.1进行了测试.
再次,如果您这样做,您的APP将不会被APPLE批准.
| 归档时间: |
|
| 查看次数: |
3849 次 |
| 最近记录: |