我有一个.ipa文件(iOS应用),我让用户安装ad-hoc(在私人服务器上使用企业帐户进行无线播放)。
挑战是应用程序从应用程序到应用程序的区别。他们在应用程序中使用不同的徽标和不同的URL。
在人们下载之前,是否可以动态更改我的服务器上的.ipa文件?
进一步说明:
我必须强调,我不能为每个应用制作.ipa文件。我必须能够更改开始屏幕,徽标并为单个.ipa文件设置url变量。
换句话说,每次有人想下载它时,我都需要动态地更改服务器上的.ipa文件。
我希望拥有的内容:
我希望有一个关于如何在heroku或amazon服务器上执行此操作的示例/指南。没有什么花哨。基本上只是更改info.plist中的变量,然后再对其进行编码。
答案 0 :(得分:8)
如前所述,您只需简单地解压缩并拉链以创建自己的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个字符。
您还需要一些代码,以便将Payload/yourapp.app/extra/
下的空目录动态添加到ipa,并将百分比编码的消息作为其文件名,例如: 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副本,否则网址会在ipa内的/extra/
下堆积。
答案 1 :(得分:3)
我认为你可以使用Jenkins Build来满足这种类型的需求。只需要在构建动作之前更改你的资源。它将生成带有新的ipa
标志,
飞溅,
App_Identifier,
App_DisplayName,
甚至可以更改产品名称。
logo和splash可以被一些php脚本替换。
对于App_Identifier,App_DisplayName,您可以使用产品名称
Config.xcconfig 文件
对于config.xcconfig,请查看this link
对于Ex。请参阅我的Config.xcconfig文件信息
appDisplayName=My App
appIdentifier=org.myComp.myApp
productName=katWalk
我接受插入值的变量。
要更改产品名称Go->构建设置 - >包装 - >产品
并将该变量名称alog与大括号后跟$($)符号作为
更改App_Identifier和app_DisplayName Go - > App-Info.plist文件并将变量名称更改为
现在您需要在构建之前更改config.xcconfig文件中的变量值,并且您的应用程序将准备好新徽标,Splash,标识符,显示名称和新产品名称。
愿这会对您有所帮助
答案 2 :(得分:1)
是的,使用PHP,Python,Ruby或任何其他服务器端语言,您可以创建一个处理.ipa和.plist请求的路由。当这些进入您的服务器端程序时,可以确定为该URL提供哪个ipa和plist。
将所有IPA及其信息存储在数据库中可能很有用,这将允许您的脚本在运行时生成完全生成plist。