iOS 如何使用私有API中的UIApplication launchApplicationWithIdentifier?

4
[编辑]我已经破解了我的设备。并在Github上找到了最新的私有APIiOS-Runtime-Headers
我想在我的应用程序中使用私有API。
我在github上找到了kennytm/iphone-private-frameworks,但它只支持iOS 3.x。而我正在使用iOS 5.0.1。
我还在Google iPhone开发工具中找到了一些代码。但这真的让我感到困惑。我是iPhone开发的新手。
我该怎么做才能使用?
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.a.b" suspended:NO];

有人可以给我指导或一些例子。非常感谢。
1个回答

8

需求

  1. 越狱 的iOS设备。
  2. 在您的钥匙串中有有效的证书/密钥及其相关的预配文件。(如果您没有注册苹果开发者计划,可以使用这个解决方法:在XCode中自签名并在iPhone上测试我的代码)

我的解决方案

1)在您的XCode项目中启用Entitlements

为了向您的项目添加Entitlements,选择项目导航器中的项目,然后在活动的目标->摘要->Entitlements->勾选启用Entitlements复选框。新文件名为" YourProject.entitlements "将立即出现在项目导航器中。

2)将以下属性添加到Entitlements中。

Add entitlement property: com.apple.springboard.launchapplications of type Boolean with value YES

3)由于launchApplicationWithIdentifier:suspended:是私有API,因此您需要明确声明它才能构建您的应用程序。只需在适当的位置添加以下代码

// Simply make declaration  inside a Category.
#import "BlahBlah.h"
@interface UIApplication (Undocumented)
    - (void) launchApplicationWithIdentifier: (NSString*)identifier suspended: (BOOL)suspended;
@end
....
@implementation BlahBlah
...

4) 构建您的项目。

5) 将YourProject.app复制到设备的/Application文件夹中(例如通过SFTP)

6) 重新启动或重启iDevice。

7) ...

8) 获得利润!

另请参阅

从我的应用程序启动应用程序的特殊API - 另一种解决方案

iOS中苹果默认应用程序的包标识符是什么?


我已经越狱了我的设备。我将此密钥添加到 /Supporting Files/myAppName-Info.plist 然后构建它。我收到了与之前相同的消息。接收器类型“UIApplication”对于实例消息不声明具有选择器“launchApplicationWithIdentifier:suspended:”的方法。 - wyp
不要在info.plist中修改,而是在Entitlements中进行检查。另外,请检查我的UPD,那里有另一个可能有用的解决方案。 - Oleg Trakhman
抱歉重新翻出一个旧帖子,但我已经使用这个技巧一年左右了。我刚刚升级到IOS 7,我的应用程序不能再使用以下代码切换到Safari了... [[UIApplication sharedApplication]launchApplicationWithIdentifier:@"com.apple.mobilesafari" suspended:NO]; ...有什么办法可以让它在IOS 7中再次正常工作? - Plasma
@Plasma 为什么不试试 [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://google.com]]" 呢? - Oleg Trakhman
因为我想在不改变当前页面的情况下返回Safari。我的应用程序通过附加到我的应用程序的URL方案从Safari调用。我的应用程序在几秒钟内处理URL,然后将您返回到Safari,以便您可以继续浏览。目前,在IOS 7上,它会弹出我的应用程序,处理URL,然后您必须手动切换回Safari,这真是一件痛苦的事情。我还查看了SBSLaunchApplicationWithIdentifier,但是我无法在SpringBoardServices头文件放置的情况下编译代码。 - Plasma
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接