-->

iOS版如何使用Entitlement.plist指定我的应用程序的性能(iOS How to us

2019-06-25 13:03发布

我使用的越狱+的AppSync + iOS5.0.1设备(不具有开发许可证,但有一些技巧,我可以运行在我的设备上的应用程序)

现在我想使用私有API launchApplicationWithIdentifier:暂停:. 所以,我需要添加

<key>com.apple.springboard.launchapplications</key>
<true/>

到myApp.entitlements.plist文件。 然后,它应该工作,但我仍然有错误

'Receiver type 'UIApplication' for instance message does not declare a method 
 with selector 'launchApplicationWithIdentifier:suspended:''

然后我发现有人说,如果我想使用Entitlements.plist代码签名必须启用。 是真的吗? 我必须有一个开发者许可证?

或者是有使用这种方法的任何其他方式? 我读到有关如何使用私有API的一些方法。 这似乎很难。 我是新来的iOS开发。

谢谢。

Answer 1:

我看到您的帖子两个问题/问题:

1)你的错误

“接收器类型‘的UIApplication launchApplicationWithIdentifier’例如消息不具有选择声明的方法‘:悬浮:’”

那是一个编译器错误? 这听起来像也许是。 事情是这样的。 还有大量的Objective-C类的集合中的公共框架中仍然有他们一些私人的方法。 因此,在正常的头文件(.h文件)为了公共框架,这些私有方法将不会列出。 但是,他们在那里的动态库。 如果你想建立一个使用这些应用程序,然后解决问题的方法之一是找到完整的报头的副本。

例如, 以下是完整UIApplication.h头部的拷贝 。

然后,您可以复制的私有方法的声明,并在自己的代码,声明他们就像这样:

// Used to disable warning for non-public methods
@interface UIApplication (Extensions)
  - (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended;
@end

这应该从抱怨私有方法不存在停止编译器。

对于未来,你应该阅读有关class-dump ,这是你可以在SDK中的公共或私人的框架运行,反向生成类似上面的标题,你自己的工具。 他们将与该SDK的每一个版本发生变化,所以这是很好的可以自己生成它们。

2)你问有关使用权利,而不代码签名。

首先, 读什么Saurik公司原本写在这里 。 是的,你确实需要代码签名的权利。 但是, 没有 ,它没有要与越狱手机苹果证书。 您可以假冒的代码标志,通过下载ldid可执行文件,并做

cd MyAppName.app
ldid -Sentitlements.xml MyAppName

假设你的应用程序被命名为MyAppName和您所做的权利文件entitlements.xml。认为 ,这享文件会为你工作,如果你假以LDID代码签名吧:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.springboard.launchapplications</key>
    <true/>
  </dict>
</plist>

小心。 我发现ldid在几个地方在互联网上。 我真的不知道哪一个是正确的。 我记得,有一次,我试图做到这一点,和版本ldid我使用签名的权利没有工作。 我下载ldid从另一个来源,然后它的工作。 所以,要小心。



文章来源: iOS How to use Entitlement.plist to specify property of my app