Ветка Deep Linking не работает при открытии приложения через AppStore

Привет, я использую ветку для глубоких ссылок в своем приложении для iOS. Если приложение установлено, открывается глубокая ссылка, и приложение показывает контроллер представления, отличный от исходного контроллера представления. Если приложение не установлено, пользователь перенаправляется в AppStore.

В документации Branch говорится, что если приложение перенаправляется в AppStore, мы все равно можем отправить ему определенные параметры (как обычно). Но это не работает. Когда приложение открывается после установки магазина приложений (после перенаправления в магазин приложений), оно не открывает новый контроллер представления, который обычно открывается через глубокую ссылку Branch (когда приложение уже находится в 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
    }

person Akaanksha    schedule 22.09.2017    source источник
comment
В StackOverflow есть люди из команды Branch, которые отслеживают вопросы. Возможно, вы захотите открыть билет поддержки Branch, чтобы привлечь больше внимания.   -  person Oleksiy Ivanov    schedule 14.10.2017


Ответы (1)


У филиала потрясающая поддержка. Они отвечают на каждый ваш запрос. После всех обсуждений, которые у меня были с ними по почте. Я понял, где была лазейка в моем диплинке с помощью branch.

Ссылка, которую мы отправляли из нашего бэкэнда, содержала обратные косые черты (**), а ветка принимает **амперсанд (&). Когда мы заменили обратную косую черту на амперсанды, все заработало.

person Akaanksha    schedule 16.10.2017
comment
не могли бы вы поделиться каким-либо учебником, как это использовать. Поскольку я смущен тем, как мы можем открыть AppStore, когда приложение не установлено через глубокую ссылку. - person Amanpreet; 12.09.2019