加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:00:23 所属栏目:百科 来源:网络整理
导读:我问了一个问题 here,但答案指导我开一个新话题.很快,我想从我的应用程序在Appstore上推出一个免费的应用程序,但我想要启动的应用程序没有 URL Scheme.对我的另一个问题的评论是使用一些特殊的API,如SBSLaunchApplicationWithIdentifier或像 UIDocumentInter
我问了一个问题 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不会被苹果公司批准.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读