2011-07-21 145 views
5

尽管它想要测试应用程序更新时是否有方法?iOS应用程序更新测试

我很尴尬,因为有一个错误只发生在应用程序更新时发生,并且它不调查。

回答

7

如果您问是否要通过应用程序商店更新应用程序时,我不知道这种方法。

这样做的黑客方法是将当前应用程序版本保存到NSUserDefaults,然后检查NSUserDefaults应用程序版本是否等于当前应用程序版本。

例如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    NSString *currentAppVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

    if ([defaults objectForKey:@"savedAppVersionKey"] != nil) { 
     //key exists 

     NSString *savedAppVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedAppVersionKey"]; 

     if ([currentAppVersion isEqualToString:savedAppVersion]) { 
      //still running the same app version 
     } 
     else { 
      //the app version changed from the last launch 
     } 

    } 
    else { 
     //first run, set the key & synchronize 
     [[NSUserDefaults standardUserDefaults] setObject:currentAppVersion forKey:@"savedAppVersionKey"]; 

     [[NSUserDefaults standardUserDefaults] synchronize] 
    } 

} 

我没有测试的代码,但它应该工作。

感谢,

-David

+0

这个测试的更新,目前我在做什么。但我将应用程序版本存储在数据库中。 – conor

+1

上面的代码从不存储'currentAppVersion',第一次运行除外。一个简单的解决方案是删除其他的,并且每次只需设置版本和同步。 – joshpaul

3

而不是从运行Xcode中的应用程序,你可以将应用程序拖动到你的iTunes。在此之后,当您同步时,应用程序将由iTunes安装(您需要安装配置文件,但是如果您可以通过Xcode运行,那么您已经拥有了它)。然后,您可以将较新版本的应用程序拖到iTunes上,并通过执行同步来更新它(请确保您更改了应用程序版本,否则iTunes不会更新该应用程序)。

我不知道它是否会与更新中发生的过程完全相同,但我相信这是测试它的最好方法。

0

最好的方法是创建一个带有旧版本应用程序的开发配置文件的ipa文件。有人提到你可以将这个文件与iTunes同步。其实这不是最简单的方法;请使用X代码管理器将“ipa”文件拖到“设备”> [您的设备名称]>“应用程序”下的设备中。这会立即安装应用程序的旧版本。

此时,在此时启动您的应用程序并重新创建您尝试重新创建的任何情况可能很重要。 (注意:X代码管理器允许您使用设备选项卡上管理器底部的“下载”和“上传”选项卡将文件传入/传出沙箱,因此可能不需要执行所有状态手动创建逻辑)

一旦安装了旧应用程序并处于您尝试重新创建的状态,则可以在旧应用程序之上启动新应用程序,或从Test-Flight/X-部署新的ipa,代码管理器。

特别是从调试器启动时,看起来好像bundle/sandbox位置不会/不会改变;当从Test-Flight更新它时。目前我不清楚这个位置是否可以从iTunes上更新实际的应用程序更新,但这绝对是您想要在测试中考虑的事情。