objective-c – 从我的应用程序启动应用程序的特殊API

前端之家收集整理的这篇文章主要介绍了objective-c – 从我的应用程序启动应用程序的特殊API前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我问了一个问题 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不会被苹果公司批准.

猜你在找的C&C++相关文章