2016-02-24 3 views
3

Гипотеза: У меня есть собственный сокращенный URL-адрес, который перенаправляется на длинный URL-адрес branch.io. Этот собственный URL-адрес домена зарегистрирован в файле прав моего приложения для Universal Links. Когда пользователь удаляет короткую ссылку, приложение открывается и вызывает приложение: continueUserActivity: restoreHandler: ... В этом методе я получаю URL-адрес перенаправления (ответвления), который стоит за короткой ссылкой, создает новую NSUserActivity на основе новой ссылку и вызов метода continueUserActivity (с новым действием как параметром) из Branch SDK.Branch.io custom url shortener & universal links

Проблема заключается в том, что обратный вызов из Branch SDK не возвращает ничего, связанного с этой ссылкой. Он возвращается, как если бы ни один URL не был передан.

Если я жестко привязываю ссылку, исходящую от перенаправления, и сразу вызываю Branch SDK, не дожидаясь ответа на перенаправление, тогда все работает нормально. Я полагаю, что это связано со временем в Branch SDK.

Вопрос в следующем: как я могу заставить филиал распознать ссылку и вернуть мне параметры, которые мне нужны при использовании схемы переадресации, описанной выше? (Я хочу использовать свой собственный URL-адрес, а не один из Branch Branch)

+0

Alex with Branch здесь: это, безусловно, несколько необычное применение нашей системы связывания! Мы предоставляем встроенный корректор URL-адресов, чтобы избежать ошибок, присущих более сложному процессу, подобному описанному вами, поэтому трудно точно определить, где можно сломать вещи. Не могли бы вы помочь мне понять обоснование использования пользовательского укороченного? –

+0

Как вы получили ссылку за сокращенным URL? В моем случае я хочу, чтобы URL-адрес укоротил URL-адрес. @stonycis –

+1

@ Sumeet.Jain Я использую метод setTaskWillPerformHTTPRedirectionBlock из AFHTTPSessionManager (AFNetworking), чтобы получить перенаправление за коротким URL. – stonycis

ответ

0

При определении того, нужно ли обрабатывать связь Branch или нет, Branch проверяет, что NSUserActivity имеет тип NSUserActivityTypeBrowsingWeb. Если это так, Branch проверяет .webpageURL, чтобы определить, является ли она ветвью. Если это не так, Branch понимает, что ни одна связь Branch не была нажата.

Чтобы вручную передать ссылку Branch в SDK после того, как приложение было открыто каким-либо другим способом, доступны две функции: .continue и .handleDeepLink.

.continue

let activity = NSUserActivity(activityType: "NSUserActivityTypeBrowsingWeb") 
    activity.webpageURL = URL(string: "https://testbed-swift.app.link/77Q527xswy") 
    Branch.getInstance().continue(activity); 

.handleDeepLink

Branch.getInstance().handleDeepLink(URL(string: "https://testbed-swift.app.link/77Q527xswy")) 

Если вы вызываете один из этих методов, филиал SDK будет обрабатывать ссылку Branch прошел. Если эти методы не являются работая для вас, я проверил бы, чтобы убедиться, что вы фактически передаете действующую ссылку Branch в коде, а не ссылку, которую вы используете, чтобы открыть приложение.