Ссылка 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.