如前所述,您可以简单地解压缩并再次压缩以创建自己的 ipa。
您还需要添加一些不需要代码签名的资源。
您最好的选择是在 ipa 中创建一个新的(空)目录。目录本身没有签名,但会在设备上提取,并且可以通过您的代码检测到。
换句话说:CodeResources
包含签名的文件在添加空目录时不会更改。
我刚刚做的一个简单测试是创建一个对名为“extra”的文件夹的文件夹引用,其内容使用百分比编码解码并显示在弹出窗口中:
NSString *path = [[NSBundle mainBundle] pathForResource:@"extra" ofType:@""];
NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:path];
NSString *f;
while (f = [direnum nextObject])
{
NSString *decoded = [f stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:decoded delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
[alert show];
}
这可用于向您的代码发送潜意识消息。百分比编码允许您输入您喜欢的任何字符。我测试了最多 100 个字符的文件名长度。
您还需要一些代码来动态地将空目录添加到 ipa下Payload/yourapp.app/extra/
,以百分比编码的消息作为其文件名,例如Payload/yourapp.app/extra/http%3A%2F%2Fstackoverflow.com%2F
更新:将目录添加到 ipa 的示例 shell 命令:
$ mkdir -p Payload/myapp.app/extra/http%3A%2F%2Fstackoverflow.com%2F
$ zip -r myapp.ipa Payload/
updating: Payload/ (stored 0%)
updating: Payload/myapp.app/ (stored 0%)
updating: Payload/myapp.app/extra/ (stored 0%)
adding: Payload/myapp.app/extra/http%3A%2F%2Fstackoverflow.com%2F/ (stored 0%)
$ rm -r Payload/
当然,您每次都需要创建一个干净的 ipa 副本,否则 url 将堆积在/extra/
ipa 内。