通过 AppStore 打开应用程序时,分支深度链接不起作用
Branch Deep Linking not working when opening app through AppStore
嗨,我在我的 iOS 应用程序中使用分支进行深层链接。
如果安装了应用程序,深层链接会打开,应用程序会显示与初始视图控制器不同的视图控制器。
如果应用程序未安装,用户将被重定向到 AppStore。
Branch 的文档说,如果应用程序被重定向到 AppStore,我们仍然可以向它发送某些参数。(像正常情况一样)但它不起作用。当应用程序在应用商店安装后打开时(重定向到应用商店后),它不会打开新的视图控制器,它通常通过 Branch 打开;s 深层链接(当应用程序已经在 iPhone 中)。
我的代码如下:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UserDefaults.standard.set(false, forKey: "isDataSynced")
UserDefaults.standard.setSecret(securePassword)
// UserDefaults.standard.set(false, forKey: "DeviceIdentifiersSavedInDB")
CommonFunctions.sharedCommonFunctions.setUpSideMenu()
UserDefaults.standard.set(false, forKey: "fromBranch")
Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
// params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
// params will be empty if no data found
// ... insert custom logic here ...
if error == nil {
print(params as? [String: AnyObject] ?? {})
if let parameters = params as? [String : AnyObject] {
if let link = parameters["~referring_link"] as? String {
if self.validateURL(url: URL(string: link)!) {
UserDefaults.standard.set(false, forKey: "declinedTermsConditions")
UserDefaults.standard.set(true, forKey: "fromBranch")
let initialViewController = self.mainStoryboard.instantiateViewController(withIdentifier: "CustomSideMenuControllerViewController") as! CustomSideMenuControllerViewController
self.window?.rootViewController = initialViewController
}
}
}
}
}
if UserDefaults.standard.value(forKey: udiBarcode) == nil {
} else {
//Navigate to DashBoard VC
let initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "CustomSideMenuControllerViewController") as! CustomSideMenuControllerViewController
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
UserDefaults.standard.set( "true" , forKey: "isFirstTimeAutomationTest")
Fabric.with([Crashlytics.self])
return true
}
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
Branch.getInstance().continue(userActivity)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
// pass the url to the handle deep link call
Branch.getInstance().handleDeepLink(url)
return true
}
Branch 提供了惊人的支持。他们会回答我与他们在邮件中进行的所有 Query.After 所有讨论。我使用分支找出了我的 deeplinking 中的漏洞在哪里。
我们从后端发送的 link 包含 反斜杠 (**),而分支接受 **& 符号 (&)。当我们用&符号替换反斜杠时,它开始工作了。
嗨,我在我的 iOS 应用程序中使用分支进行深层链接。 如果安装了应用程序,深层链接会打开,应用程序会显示与初始视图控制器不同的视图控制器。 如果应用程序未安装,用户将被重定向到 AppStore。
Branch 的文档说,如果应用程序被重定向到 AppStore,我们仍然可以向它发送某些参数。(像正常情况一样)但它不起作用。当应用程序在应用商店安装后打开时(重定向到应用商店后),它不会打开新的视图控制器,它通常通过 Branch 打开;s 深层链接(当应用程序已经在 iPhone 中)。
我的代码如下:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UserDefaults.standard.set(false, forKey: "isDataSynced")
UserDefaults.standard.setSecret(securePassword)
// UserDefaults.standard.set(false, forKey: "DeviceIdentifiersSavedInDB")
CommonFunctions.sharedCommonFunctions.setUpSideMenu()
UserDefaults.standard.set(false, forKey: "fromBranch")
Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
// params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
// params will be empty if no data found
// ... insert custom logic here ...
if error == nil {
print(params as? [String: AnyObject] ?? {})
if let parameters = params as? [String : AnyObject] {
if let link = parameters["~referring_link"] as? String {
if self.validateURL(url: URL(string: link)!) {
UserDefaults.standard.set(false, forKey: "declinedTermsConditions")
UserDefaults.standard.set(true, forKey: "fromBranch")
let initialViewController = self.mainStoryboard.instantiateViewController(withIdentifier: "CustomSideMenuControllerViewController") as! CustomSideMenuControllerViewController
self.window?.rootViewController = initialViewController
}
}
}
}
}
if UserDefaults.standard.value(forKey: udiBarcode) == nil {
} else {
//Navigate to DashBoard VC
let initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "CustomSideMenuControllerViewController") as! CustomSideMenuControllerViewController
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
UserDefaults.standard.set( "true" , forKey: "isFirstTimeAutomationTest")
Fabric.with([Crashlytics.self])
return true
}
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
Branch.getInstance().continue(userActivity)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
// pass the url to the handle deep link call
Branch.getInstance().handleDeepLink(url)
return true
}
Branch 提供了惊人的支持。他们会回答我与他们在邮件中进行的所有 Query.After 所有讨论。我使用分支找出了我的 deeplinking 中的漏洞在哪里。
我们从后端发送的 link 包含 反斜杠 (**),而分支接受 **& 符号 (&)。当我们用&符号替换反斜杠时,它开始工作了。