Branch.io: 如何在 iOS 中切换实时和测试环境

Branch.io: how to switch between live and test environment in iOS

正如 Branch 在其文档中所说:

For more advanced implementations, you may want to specify keys for both Test and Live environments (for example, if you are building a custom switch to automatically select the correct key depending on compiler schemes).

Open your Info.plist file in Xcode, change the branch_key entry to a Dictionary, and create two subentries for your keys:

我的问题是:如何构建自定义开关以根据编译器方案自动select正确的密钥?我知道我可能会使用 #if DEBUG 来定义环境,但我不明白我应该在哪里告诉分支它应该使用哪个键?或者分支会自动检测它?

非常感谢

来自 Branch.io 的 Alex:#if DEBUG 是最好的方法,实际上您只需要切换单例调用即可。而不是

let branch: Branch = Branch.getInstance(); // Swift
Branch *branch = [Branch getInstance]; // Objective C

你会用到

let branch: Branch = Branch.getTestInstance(); // Swift
Branch *branch = [Branch getTestInstance]; // Objective C

您可以将 NSString 传递给 getInstance。 我是这样使用它的:

if (Debug) {
[Branch getInstance:@"key_test_lalala"];
}

else {
[Branch getInstance:@"key_live_lalala"];
}

在这种情况下,您也不需要在 plist 中包含 branch_key。

然而,作为旁注,最近我们遇到了分支链接不再使用测试密钥的问题,支持人员的答复是我们不应再使用测试密钥。

除了 Alex Bauer 的回复外,我还为 return 正确的 Branch 实例创建了一个扩展:

import Branch

extension Branch {
    class var instance:Branch {
        get {
            #if DEBUG
                return Branch.getTestInstance()
            #else
                return Branch.getInstance()
            #endif
        }
    }
}

用法:

Branch.instance.initSession(launchOptions: launchOptions)

截至 2018 年 5 月:

Branch.getTestInstance() 已弃用。 请使用以下扩展名继续:

extension Branch {
    class var instance:Branch {
        get {
            #if DEBUG
                Branch.setUseTestBranchKey(true)
            #endif
            return Branch.getInstance()
        }
    }
}