Ссылка Branch.io для iOS не передает данные после установки, но работает при холодном запуске

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

Я говорю, что параметры НЕ кажутся проходными, потому что я не могу найти способ проверить это, так как не думаю, что есть способ смоделировать новую установку приложения через deeplink в Xcode. Я знаю, что могу выполнить сборку из Xcode на свой телефон без автоматического запуска приложения, а затем щелкнуть ссылку deeplink, но к этому моменту приложение уже установлено на моем телефоне, поэтому оно не выполняет задачу теста. Если кто-то знает способ проверить установку приложений через deeplink, я с радостью возьму эту информацию и поработаю с ней какое-то время ...

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

https://bnc.lt/l/5wGbOak_QW

Кто-нибудь знает о каких-либо известных проблемах, когда Branch некорректно отправляет данные после установки?

Изменить: вот что у меня есть в моем коде ветки appDelegate. Я не могу доказать, что URL-адрес не устанавливается, но HomeViewController не загружает связанное изображение, как это происходит при запуске без установки после установки. И, как я уже упоминал ранее, я не знаю, как смоделировать эту ситуацию, поскольку симулятор Xcode всегда устанавливается первым, поэтому у меня нет возможности имитировать щелчок по ссылке перед установкой.

let branch: Branch = Branch.getInstance()
    branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
  if (error == nil) {
    if let url = params["product_picture_url"] as? String {
      let url = NSURL(string: url)!
      HomeViewController.injectedImageUrl = url
    }
  }      
})

person othomas    schedule 27.06.2015    source источник
comment
Я использую стандартный код Branch в моем appDelegate, но я не могу проверить, проходят ли параметры, потому что я не знаю никакого способа имитировать щелчок по ссылке Branch перед установкой приложения ... Поэтому я не знаю, попадают ли параметры в / через код ветки или нет, все, что я знаю, это приложение не ведет себя так, как если бы они были заполнены. Я обновлю сообщение выше, чтобы включить код, который у меня есть в appDelegate   -  person othomas    schedule 29.06.2015


Ответы (2)


Можете ли вы подтвердить, что переходите по ссылке перед установкой приложения? Вот тестовый поток, чтобы параметры были переданы через новую установку:

  1. Удалить приложение
  2. Вставьте ссылку в Safari и щелкните по ней. Если вы используете симулятор, вы увидите сообщение об ошибке, поскольку он пытается открыть App Store, который не установлен.
  3. Запустите тестовое приложение из Xcode
  4. Параметры обязательно нужно передать в init

Если это не сработает, вот еще несколько предложений по устранению неполадок:

  1. Можете ли вы добавить ведение журнала, чтобы убедиться, что вы добавили initSession в правильный метод делегата, который выполняется при первом открытии. Это должно быть в этом методе делегата:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
  2. Другой распространенный сценарий - ссылка может быть создана с помощью ключа Test, и у вас есть ключ Live в вашем списке. Branch не позволяет использовать прямые ссылки через Test -> Live или наоборот. Если вы не уверены, с каким ключом связана ссылка, вы можете добавить к ней? Debug = true (например, https://bnc.lt/l/5wGbOak_QW?debug=true) после того, как вы выбрали Test или Live на панели инструментов, чтобы увидеть подробности. Если вы выбрали неправильный ключ, появится сообщение «Ссылка не найдена». В противном случае будет отображаться подробная информация о ссылках.

person Alex Austin    schedule 30.06.2015
comment
Блестяще! Я не думал о том, чтобы щелкнуть ссылку без установленного приложения, а затем загрузить его из Xcode, чтобы имитировать новую установку после щелчка. Я смог протестировать это и понял, что мой viewController по умолчанию запускался из раскадровки до того, как служба филиала ответила своими параметрами. В этот момент код ветки был запущен, но мое представление не обновлялось, чтобы отразить изменения. Спасибо за помощь! - person othomas; 02.07.2015
comment
Я изо всех сил пытался отслеживать установки и нашел этот пост. Я понял, что для КАЖДОЙ установки нужно новое устройство. Поскольку ветка не может отслеживать удаления, предполагается, что у пользователя уже было приложение при каждой последующей установке после первой, поэтому она отслеживает его так же, как открытие. Ключевым моментом для меня было нажать Симулятор - ›Сбросить содержимое и настройки. Это эффективно создает новое устройство. Затем щелкните ссылку, которую вы пытаетесь протестировать в симуляторе. Затем запустите приложение из Xcode. Это воспроизводит установки на 100%. - person Sean; 07.10.2015
comment
Здорово! Решил это. Тест ‹-› Проблема была в прямом эфире, но debug=true так полезно знать! Рад, что совершил ошибку и нашел здесь этот кусок золота - person hashier; 04.08.2016

Я выстрелил себе в ногу, изменив подпись одного из обратных вызовов в AppDelegate.

я имел

func application(_: UIApplication, continue userActivity: NSUserActivity, _: @escaping ([Any]?) -> Void) -> Bool

в то время как правильная подпись была

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool

В результате я всегда получал ["+clicked_branch_link": 0, "+is_first_session": 0] в обработчике глубинных ссылок, а при первом запуске после установки приложения данные были бы доступны, как и ожидалось. И ни единого сигнала от Branch SDK об отсутствии обратного вызова ¯ \ _ (ツ) _ / ¯. Интересно, что в журнале было предупреждение от Google Login SDK.

person Andrii Chernenko    schedule 14.03.2017