2017-04-09 15 views
1

所以我的問題是,當用戶第一次允許應用程序進入庫,使得inapppurchase或本地化initSession的關閉從addDelegate被觸發,並導致打開vc再次。每個訪問的行爲都是一樣的,它們不以任何方式與分支連接,並且他們的superview vc甚至不會導入分支。所以我認爲這個問題可能在我的info.plist裏面,但一切似乎都是正確的,不知道什麼是錯的。任何人幫助。每當應用程序變得活躍感謝當訪問照片,購買,本地化等時,Branch.io關閉會被調用

plist printscreen

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() 
} 
}) 
} 
+0

亞歷克斯在這裏:恐怕你的問題是很難理解的。您是否可以編輯以包含您所看到的具體分步說明,或發佈顯示問題的視頻? –

+0

@AlexBauer對於遲到的回覆感到抱歉,但很忙。好吧,我會給你一個stepbystep解釋,因爲我寧願不分享應用程序屏幕。所以,可以說我啓動我的應用程序,當主(第一)視圖控制器加載它顯示警報與訪問應用程序本地化服務的權限,當我按「允許」回調從'分支?.initSession(launchingOptions:launchOptions和RegisterDeepLinkHandler :{params,error in ...}'正在被調用,並且因爲在這個處理程序中,我得到了我的rootviewcontroller的應用程序,所以它再次被調用,這隻發生在你的initSession處理程序中,而不是在didFinishLaunchi –

+0

你的評論被切斷了。請在此問題上逐步解答您的原始問題?或者,請隨時與分支機構[整合團隊](https://support.branch.io/support/tickets/new)聯繫 –

回答

0

該科的init回調將被觸發。對於冷啓動,這是由didFinishLaunchingWithOptions中的init調用觸發的。對於熱啓動,這是由您在continueUserActivity或(很少現在)openURL中添加的分支代碼觸發的。這可以通過SDK維護一個指向init回調的指針來實現,SDK也會根據情況註冊一個「open」或「install」事件。

每當應用程序終止或後臺運行時,Branch SDK將註冊一個「關閉」事件並清除所有會話數據。

從您的描述中可以看出,當您提示用戶嚮應用程序授予各種權限時,您的應用程序會發生背景隱藏。發生這種情況時,SDK將關閉會話並清除會話參數。當應用程序恢復時,它不再是參照會話,因此沒有可用的鏈接參數。

有解決此類問題的基本方法有兩種:

  1. 商店科鏈接參數,您有興趣使用本地存儲,使他們能夠當應用程序被激活,第二次
  2. 檢索
  3. 修改應用程序的設計,使其不再產生這些彈出的權限從Branch.io提示
+0

感謝你爲你的答案,但計算出來,解決方案是改變分支機構代碼內的觀察員從becomeActive和willResign到didEnterBakground和willEnterForeground –

+0

太棒了!如果你覺得這很棒ld發佈這個問題的正式答案。 – dwestgate

相關問題