#ios #swift #xcode7 #branch.io #deeplink
#iOS #swift #xcode7 #branch.io #глубокая ссылка
Вопрос:
Я использую Branch SDK в Xcode 8, swift, iOS9.3.
При создании ссылки и прохождении через Airdrop добавленные параметры не попадают в «переменную параметров :
branch.initSession(launchOptions: launchOptions, isReferrable: true, andRegisterDeepLinkHandler: {(params : [AnyHashable : Any]?, error) -> Void in
при печати «параметры» его печати :
▿ Optional<Dictionary<AnyHashable, Any>>
▿ some : 2 elements
▿ 0 : 2 elements
▿ .0 : AnyHashable(" clicked_branch_link")
- value : " clicked_branch_link"
- .1 : 0
▿ 1 : 2 elements
▿ .0 : AnyHashable(" is_first_session")
- value : " is_first_session"
- .1 : 0
Моя созданная ссылка:
branchUniversalObject = BranchUniversalObject(canonicalIdentifier: "item/1")
branchUniversalObject.title = "Meet Mr. Squiggles"
branchUniversalObject.contentDescription = "Your friend Josh has invited you to meet his awesome monster, Mr. Squiggles!"
branchUniversalObject.imageUrl = "https://example.com/monster-pic-12345.png"
branchUniversalObject.addMetadataKey("userId", value: "12345")
branchUniversalObject.addMetadataKey("userName", value: "Josh")
branchUniversalObject.addMetadataKey("monsterName", value: "Mr. Squiggles")
branchUniversalObject.addMetadataKey("product_picture", value: "Mr. Squiggles product_picture")
branchUniversalObject.automaticallyListOnSpotlight = true
branchUniversalObject.userCompletedAction(BNCRegisterViewEvent)
linkProperties = BranchLinkProperties()
linkProperties.feature = "share"
linkProperties.addControlParam("$desktop_url", withValue: "http://example.com/home")
linkProperties.addControlParam("$ios_url", withValue: "http://example.com/ios")
branchUniversalObject.getShortUrl(with: linkProperties, andCallback: { (optUrl: String?, error: Error?) in
if error == nil, let url = optUrl {
print("got my Branch link to share: %@", url)
DispatchQueue.main.async {
self.branchUniversalObject.showShareSheet(with: self.linkProperties,
andShareText: "Super amazing thing I want to share!",
from: self) { (activity: String?, success: Bool) in
print("done showing share sheet! : (success)")
}
}
}
})
Как получить добавленный метаданный в качестве параметра при открытии приложения через DeepLink, например: params[«product_picture»]
Ответ №1:
Алекс из ветки здесь: clicked_branch_link: 0
параметр означает, что SDK не обнаруживает никакой ссылки для этого устройства. Вот почему вы не получаете свои метаданные обратно.
Это происходит только в том случае, если вы делитесь ссылкой через AirDrop? Не могли бы вы попробовать открыть ссылку через заметки или сообщения и посмотреть, вернутся ли ваши метаданные, как ожидалось?
Комментарии:
1. Спасибо за ответ. Да, я пробовал через mail. При этом, когда я нажимаю на ссылку из почты. Приложение открывается, но перенаправление не выполняется (не получает параметр). Но когда приложения открываются через app.link, показывая глубокие просмотры iOS и возможность открытия приложения вверху, при открытии приложения по этой ссылке я получаю параметры, и происходит перенаправление. Я проверяю параметр в методе didFinishLaunchingWithOptions класса AppDelegate.
2. В категории «События» раздела «Liveview» на панели инструментов, когда приложение открывается при нажатии на общую ссылку, «URL ссылки, ссылающейся на сеанс», получает nil для соответствующей записи.
3. Хммм …
didFinishLaunchingWithOptions
это правильное место для проверки этого. Возможно ли записать снимок экрана того, что происходит, когда вы нажимаете на ссылку из mail?