Ios 每当访问照片、购买、本地化等时,就会调用Branch.io closure

Ios 每当访问照片、购买、本地化等时,就会调用Branch.io closure,ios,plist,branch.io,Ios,Plist,Branch.io,所以我的问题是,当用户第一次允许应用程序进入库时,会触发inapppurchase或本地化initSession从addDelegate关闭,并导致再次打开vc。每个访问行为都是相同的,它们不以任何方式与分支连接,而且它们的superview vc甚至不导入分支。因此,我认为问题可能在我的info.plist中,但一切似乎都是正确的,不知道出了什么问题。谁来帮忙。谢谢 只要应用程序处于活动状态,就会触发Branch init回调。对于冷启动,这是由didFinishLaunchingWithO

所以我的问题是,当用户第一次允许应用程序进入库时,会触发inapppurchase或本地化initSession从addDelegate关闭,并导致再次打开vc。每个访问行为都是相同的,它们不以任何方式与分支连接,而且它们的superview vc甚至不导入分支。因此,我认为问题可能在我的info.plist中,但一切似乎都是正确的,不知道出了什么问题。谁来帮忙。谢谢


只要应用程序处于活动状态,就会触发Branch init回调。对于冷启动,这是由didFinishLaunchingWithOptions中的init调用触发的。对于热启动,这是由您在continueUserActivity或(现在很少)openURL中添加的分支代码触发的。这可以通过SDK维护一个指向init回调的指针来实现,并且SDK还将根据需要注册一个“打开”或“安装”事件

无论何时应用程序终止或后台运行,Branch SDK都会注册一个“关闭”事件并清除所有会话数据

根据您的描述,当您提示用户向应用程序授予各种权限时,您的应用程序听起来像是被屏蔽了。发生这种情况时,SDK将关闭会话并清除会话参数。当应用程序恢复时,它不再是一个引用会话,因此没有可用的链接参数

解决此类问题有两种基本方法:

  • 存储您对使用本地存储感兴趣的分支链接参数,以便在应用程序第二次激活时可以检索这些参数
  • 修改应用程序设计,使其不再生成这些弹出权限提示

  • 只要应用程序处于活动状态,就会触发Branch init回调。对于冷启动,这是由didFinishLaunchingWithOptions中的init调用触发的。对于热启动,这是由您在continueUserActivity或(现在很少)openURL中添加的分支代码触发的。这可以通过SDK维护一个指向init回调的指针来实现,并且SDK还将根据需要注册一个“打开”或“安装”事件

    无论何时应用程序终止或后台运行,Branch SDK都会注册一个“关闭”事件并清除所有会话数据

    根据您的描述,当您提示用户向应用程序授予各种权限时,您的应用程序听起来像是被屏蔽了。发生这种情况时,SDK将关闭会话并清除会话参数。当应用程序恢复时,它不再是一个引用会话,因此没有可用的链接参数

    解决此类问题有两种基本方法:

  • 存储您对使用本地存储感兴趣的分支链接参数,以便在应用程序第二次激活时可以检索这些参数
  • 修改应用程序设计,使其不再生成这些弹出权限提示

  • Branch.io的亚历克斯:恐怕你的问题很难理解。你能编辑一个具体的一步一步的解释你所看到的,或者发布一个视频来展示这个问题吗?@AlexBauer很抱歉回复晚了,但是很忙。好的,我会给你一个逐步的解释,因为我不想分享应用程序屏幕。因此,假设我正在启动我的应用程序,当加载主(第一个)视图控制器时,当我从“branch?”按“Allow”回调时,它会显示具有访问应用程序本地化服务权限的警报'被调用,因为在这个处理程序中,我得到了我的rootviewcontroller for app,所以它被再次调用。这只发生在你的initSession处理程序中,而不是在didfishlaunchiy中。你的评论被切断了。你能用关于这个问题的逐步信息编辑你的原始问题吗?或者,请随时与分支联系Branch.io的Alex:恐怕你的问题很难理解。你能编辑一个具体的一步一步的解释你看到了什么,或者发布一个视频来说明这个问题吗?@AlexBauer很抱歉回复太晚,但很忙。好吧,我会给你一个逐步的解释,因为我不想分享应用程序屏幕。那么,让我们说吧我正在启动我的应用程序,当加载主(第一个)视图控制器时,当我从'branch?'按“允许”回调时,它会显示具有访问应用程序本地化服务权限的警报。initSession(launchingOptions:launchOptions,andRegisterDeepLinkHandler:{params,error in…}'被调用,因为在这个处理程序中,我得到了我的rootviewcontroller for app,所以它被再次调用。这只发生在你的initSession处理程序中,而不是在didfishlaunchiy中。你的评论被切断了。你能用关于这个问题的逐步信息编辑你的原始问题吗?或者,请随时与分支联系谢谢你的回答,但我明白了,解决方案是将分支代码中的观察者从becameActive和WillDinterBakGround更改为DinterBakGround和WillEnterForeGround真棒!如果你能将其作为这个问题的官方答案,那将是非常棒的。谢谢你的回答,但我明白了,解决方案是更改观察者来自becameActive和WillEnterBakGround以及WillEnterForeGround的分支代码中的用户太棒了!如果您能将其作为此问题的官方答案发布,那将是非常棒的。
    var window: UIWindow?
    func ...didFinishLaunchingWithOptions... {
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    window?.rootViewController = firstVC()
    
    let branch = Branch.getInstance()
    branch?.initSession(launchOptions: launchOptions, automaticallyDisplayDeepLinkController: true, deepLinkHandler: { params, error in
    if error == nil && params?["+clicked_branch_link"] != nil && params?["postKey"] != nil{
    self.window?.rootViewController = MainVC()
    }else{
    self.window.rootViewController = LoginVC()
    }
    })
    }