是否可以仅在移动平台上更新应用程序的某些部分?

时间:2015-01-08 07:10:15

标签: android ios windows-phone-8 mobile app-store

我正在开发一款目前可用于桌面,Mac,Linux的游戏。在这个游戏中有一个游戏更新程序,只下载游戏的更新部分。

我想与移动平台进行类似的流程。我看过大小超过1 GB的游戏。要仅通过稍微更改代码来更新此类游戏或应用程序,用户必须再次完全下载整个游戏。这看起来很疯狂。

我想知道我是否有任何设施或程序可以在游戏中克服这些问题。我在桌面上的游戏大小约为1.75 GB。我使用较轻的资源用于手机。所以它可以是大约700 - 900 MB。但是,这仍然可以为小型更新提供大量下载。

让我知道你的建议。您的想法适合任何流行的移动操作系统,如iOS,Android或其他。我并不具体。

让我举个例子

当应用或游戏启动时,它首先会在播放前下载所需的更新(从我的服务器中)。完成更新后,它允许用户玩游戏。我的意思是在同一个应用程序中可以有一个更新程序组件,它执行更新并允许游戏模块运行。这只是一个可能的例子

3 个答案:

答案 0 :(得分:1)

是的,在Android上它可以很容易地完成,你只需要组织一些不同的东西......除非你的游戏真的很奇怪,只有700-900 MB的代码:D

http://developer.android.com/google/play/expansion-files.html

只有你的代码在APK中。 您的资源不是,它们位于最大大小为2GB的扩展文件中。 用户下载一个非常小的APK,然后下载扩展文件。

代码中只是一个小小的改动?新的APK,仍然很小,没人会关心。 外部资产的变化?使用第二个扩展文件修补第一个。

答案 1 :(得分:0)

只是一个建议,我认为你可以在Lua等脚本中编写频繁更改的代码,然后你只能下载并替换这些脚本。

答案 2 :(得分:0)

在iOS上可以完成。您可以在后台线程中运行的应用程序中下载资产,并将其保存在设备上。

代码示例:

dispatch_queue_t downloader = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(downloader, ^(){

          NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

          NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
          UIImage *image = [UIImage imageWithData:data];

          if ([image rangeOfString:@"png"].location != NSNotFound) {
               [UIImagePNGRepresentation(image) writeToFile:[documentsDirectoryPath stringByAppendingPathComponent:imageName] options:NSAtomicWrite error:nil];
          }
});