有时在iOS的第一次会话中未调用Branch.io initSession的回调

问题描述

从AppStore下载应用程序后(以及在某些情况下使用xCode)在AppDelegate中注册的回调( Branch.getInstance()。initSession(launchOptions:...))不会在全部(或在40-50秒后调用,这是不可接受的)。在已安装分支程序的情况下打开应用程序不会引起任何问题(调用回调,数据正确,一切都很好)。 Android中相同的API可以正常工作。我很肯定documentation是逐步遵循的。 BranchUniversalObject数据示例:

  • canonicalIdentifier:用户/ {user_id}
  • canonicalUrl:https:// {domain_name} / u / {user_id}
  • $ ios_deeplink_path / $ android_deeplink_path:打开/ u / {user_id}

任何帮助将不胜感激。 谢谢。

编辑:AppDelegate中负责处理分支数据的代码部分。

Branch.getInstance().initSession(launchOptions: launchOptions,isReferrable: isReferrable) { [weak self] (params,error) in
    if let data = params as? [String: AnyObject],let value = data["+clicked_branch_link"] as? Bool {
        self?.clickedBranchLink = value
    }
    registerDeepLinkHandler?(params,error)
}

解决方法

确保您的代码不会在 initSession 之前调用 setIdentity。 根据 Branch 集成文档 -

如果之前调用过,那么我们会在设置回调之前静默初始化SDK,以执行该方法所需的任务

enter image description here