首页 > 解决方案 > 如何保持您的 iOS 应用程序的干净生产版本?

问题描述

我开发了一个名为 Swordy Quest 的 iOS 应用程序: https ://apps.apple.com/us/app/swordy-quest-an-rpg-adventure/id1446641513

它包含用于排行榜、成就、玩家对玩家 (PVP) 匹配和部落的 Game Center 集成。

我有一个在开发时使用的本地测试版本(带有测试 bundleID)。我也有我的游戏的生产版本,我用它来玩游戏和进步,就好像我是客户一样。但是,为了升级/实现上面的 Game Center 功能,我需要使用我的生产 bundleID 进行测试。然后,这会用我所有的测试数据覆盖我的“客户游戏”(破坏我的“自然”进度)。

所以我想知道,是否有可能拥有一个“干净”的应用程序生产版本,并且仍然有一个单独的测试版本,允许我测试 Game Center 的功能。或者有什么方法可以在 Xcode 中恢复以前的应用程序状态,这样我就可以在测试数据污染之前保存我的生产干净版本?我知道在 Mac 应用程序中您可以更改自定义工作目录,但我认为您不能在 iOS 中进行更改?

在进行 Game Center 升级之前,我已经考虑备份我的应用程序的生产版本,但看起来这可能是不可能的?有没有人想出一个聪明的方法来解决这个问题?

请注意,我在应用程序中存储了 CoreData 和 UserDefaults。

标签: iosobjective-cswiftxcodetest-environments

解决方案


自定义工作目录只是命令行工具项目。ChangeCurrentDirectoryPath 选项在此位置不再可用,如下面的 XCode 4.6.1 中的屏幕截图所示。听起来很疯狂,但您可以尝试降级到 Xcode 4 并实现它。

在此处输入图像描述


或者您将需要使用 Cocoa 的 NSBundle 类或 Core Foundation 的 CFBundle 函数来加载文件。因此,为您的 Swordy Quest 测试制作重复目标。它不会影响您的干净副本。

管理方案:

ss

最后单击小齿轮按钮创建一个干净的副本以避免触摸您的生产代码。

在此处输入图像描述

设置好密钥后,产品和测试在哪里

构建设置 > 打包(写入过滤器打包)

在此处输入图像描述

实现为您的逻辑函数下面的代码(例如在其中实现一个从 LoginPlayerVC 触发 GameHomeVC 的函数)

    var key: String?
    #if TARGET_PROD || TARGET_STORE
    key = @"prodKey";
    #else
    key = @"testKey";

推荐阅读