10

我正在创建一个内部应用程序来提供我们的业务客户可以无线安装的更新应用程序。

最终我启动安装的方式是:

NSURL *otaURL = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=<<my-url.plist>>"]; 
[[UIApplication sharedApplication] openURL:otaURL];

这很好用,但我们注意到它有时会保留 plist 或 ipa 文件的缓存并安装旧版本。我们已经排除了它没有在服务器上更新,因为我们甚至可以从服务器上删除 ipa 文件,它仍然会安装旧版本。

更改 .plist 和 .ipa 文件名将起作用,但并不是真正想要的最终状态,所以我的问题是:有没有办法强制设备退出并从服务器获取文件,而不是依赖它的缓存?

4

2 回答 2

3

我有一个非常相似的问题,我用(肮脏的)解决方法解决了它;仍然比为每个新版本创建不同的 .plist 文件更好。

我在 url 中插入了一些随机数,例如:

 NSURL *otaURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=myapp.%d.plist", arc4random() % 10000]; 
 [[UIApplication sharedApplication] openURL:otaURL];

另一方面,我在 .htaccess 中添加了一条规则(假设是 Apache,配置了 mod_rewrite):

AddType application/octet-stream ipa
AddType text/xml plist

RewriteEngine on
RewriteRule (.*)\.\d+\.plist $1.plist
于 2013-06-19T17:28:16.680 回答
0

我认为 TestFlight 的人们遇到了同样的问题。在使用他们的服务时,我发现在不删除任何现有旧版本的情况下更新应用程序可能会导致一个非常错误的行为,其中一半的旧版本正在运行(例如图标)和一半的新行为。

那真的很奇怪。参照。另一个问题:为什么通过 TestFlight 安装时某些文件没有正确安装?

您应该尝试与 Apple 的支持人员或 TestFlight 人员取得联系,看看他们是否解决了这个问题。祝你好运!

于 2012-09-06T16:57:46.447 回答