ios - 如何保持您的 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。
解决方案
自定义工作目录只是命令行工具项目。ChangeCurrentDirectoryPath 选项在此位置不再可用,如下面的 XCode 4.6.1 中的屏幕截图所示。听起来很疯狂,但您可以尝试降级到 Xcode 4 并实现它。
或者您将需要使用 Cocoa 的 NSBundle 类或 Core Foundation 的 CFBundle 函数来加载文件。因此,为您的 Swordy Quest 测试制作重复目标。它不会影响您的干净副本。
管理方案:
最后单击小齿轮按钮创建一个干净的副本以避免触摸您的生产代码。
设置好密钥后,产品和测试在哪里
构建设置 > 打包(写入过滤器打包)
实现为您的逻辑函数下面的代码(例如在其中实现一个从 LoginPlayerVC 触发 GameHomeVC 的函数)
var key: String?
#if TARGET_PROD || TARGET_STORE
key = @"prodKey";
#else
key = @"testKey";
推荐阅读
- javascript - 如何为多个 id 映射单个值
- reactjs - 物理设备上的网络请求失败(Android 和 iOS)
- angular - 使用 gettext 解析 .po 翻译文件的问题
- java - 为构造函数编写 JUnit 测试用例
- android - 检查 firestore 中的字符串始终返回 true
- finite-automata - 如果 DFA 被最小化,是否保证它的补码也被最小化?
- mysql - 如何对两个相关表中的列求和
- python - 在 Python 2.7.5 上使用 selenium 从网站下载文件。文件每天更改名称的一部分(日期是文件名的一部分)
- tpu - Coral Edge TPU 连接到 Windows 10
- c# - 如何使用c#让音频按钮出现在gridView中