【问题标题】:Branch.io: how to switch between live and test environment in iOSBranch.io:如何在 iOS 中的实时环境和测试环境之间切换
【发布时间】:2016-10-18 15:16:30
【问题描述】:

正如 Branch 在其文档中所说:

对于更高级的实现,您可能需要为 测试和实时环境(例如,如果您正在构建一个 自定义开关自动选择正确的键取决于 编译器方案)。

在 Xcode 中打开 Info.plist 文件,将 branch_key 条目更改为 字典,并为您的键创建两个子条目:

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

非常感谢

【问题讨论】:

标签: ios deep-linking branch.io


【解决方案1】:

来自 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

【讨论】:

  • 我认为调试与发布版本应该始终使用getTestInstance()getInstance()。我发现我们的应用程序的调试版本在启动时调用Branch.getTestInstance().initSessionWithLaunchOptions(...),但后来使用Branch.getInstance() 并怀疑这是一个问题。这些实例是否共存,它们是否有任何冲突?或者它可以,也许初始化的实例是从get 访问器返回的实例?非常感谢您的确认。
  • 您需要对使用的环境保持一致。 Branch 将 Live 和 Test 实例视为完全独立的应用程序,因此会话不会合并,您会遇到奇怪的行为,例如丢失链接数据和不正确的身份/属性。
  • 谢谢,这提醒我阅读每一个细节是多么重要。 :) 我错过了 SDK 集成指南的“getTestInstance”部分。
  • 根据您阅读指南的时间长短,它可能还不存在!很高兴现在一切正常:)
  • @AlexBauer 您能否帮助解决来自分支 github.com/BranchMetrics/… 的以下类似问题
【解决方案2】:

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

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

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

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

不过,顺便说一句,最近我们遇到了一个问题,即分支链接不再使用测试密钥,支持人员的回复是我们不应该再使用测试密钥了。

【讨论】:

    【解决方案3】:

    除了 Alex Bauer 的响应之外,我还创建了一个扩展来返回正确的 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)
    

    【讨论】:

      【解决方案4】:

      截至 2018 年 5 月:

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

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

      【讨论】:

        猜你喜欢
        • 2018-11-20
        • 2020-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多