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

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

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

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

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

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

Изменить: вот то, что у меня есть в моем коде приложения OfficeDelegate. Я не могу доказать, что 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
    }
  }      
})

Ответ 1

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

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

Если это не сработает, вот некоторые другие рекомендации по устранению неполадок:

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

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

Ответ 2

Я выстрелил себе в ногу, изменив подпись одного из обратных вызовов в 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.