Проблемы с передачей данных из поддомена в приложение с Branch.io

У нас есть приложение для iOS, и мы используем Branch SDK для реализации приглашений. Все необходимые данные мы передаем как параметры внутри универсальной ссылки. Наша проблема в том, что он отлично работает, когда пользователь нажимает ссылку, когда приложение уже установлено на устройстве, но не может передавать данные в случайных случаях, когда пользователь должен установить приложение из Testflight или AppStore между ними. Иногда это работает, а иногда просто нет. Одна и та же ссылка может работать сейчас, но выйдет из строя через несколько минут. Под «неудачей» я подразумеваю, что параметры не передаются в приложение.

Вот наша конфигурация:

Мы настраиваем файлы Info.plist для нашей тестовой и производственной среды, как описано в документации:

  • branch_key содержит словарь с действующими и тестовыми ключами.
  • branch_app_domain содержит пользовательский домен для конкретной среды (скажем, для промежуточной версии это test.domain.com, а для производственной среды - domain.com).
  • branch_universal_link_domains - это массив строк, содержащий оба домена приложений, например test.domain.com и domain.com.

Все эти поля присутствуют в файлах .plist для обеих сред.

Также мы создали файл .entitlements, в котором разместили связанные домены. Он содержит 6 значений:

  • applinks: domain.com
  • appinks: test.domain.com
  • appinks: XXXX-alternate.test-app.link
  • приложения: XXXX.test-app.link
  • appinks: XXXX-alternate.app.link
  • appinks: XXXX.app.link

и этот файл добавляется как к промежуточным, так и к производственным целям.

В моем AppDelegate я создал такую ​​ветку:

    Branch.setUseTestBranchKey(Configuration.branchTestKeyEnabled)
    let branch: Branch = Branch.getInstance()

    branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in
        if error == nil {
            print("params: %@", params as? [String: AnyObject] ?? {})
        } else {
            print(error)
        }
    })

Где

Configuration.branchTestKeyEnabled 

верно для постановки и ложно для производства.

Позже после запуска я пытаюсь получить такие параметры ссылки:

 let branch = Branch.getInstance()
 let params = branch?.getLatestReferringParamsSynchronous() as? [String : Any]
 // Do something with parameters

Вот отчет из сценария проверки: Report

Я предполагаю, что с моей конфигурацией что-то не так, но я не понимаю, почему она ведет себя так непоследовательно.


person Vitaliy Krayovyy    schedule 30.11.2017    source источник


Ответы (1)


Брайан из Бранча здесь.

Поскольку вы получаете данные непоследовательно, возможно, возникла гонка. Мы рекомендуем вам прочитать параметры глубинной ссылки из метода слушателя здесь:

branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in
    if error == nil {
        print("params: %@", params as? [String: AnyObject] ?? {})
    } else {
        print(error)
    }
})

Если это невозможно, мы также рекомендуем позвонить getLatestReferringParams(), а не getLatestReferringParamsSynchronous().

Для получения дополнительной информации посетите: https://docs.branch.io/pages/apps/ios/#read-deep-link

person Brian Chang    schedule 30.11.2017