macOS, iOS
[iOS] deep link 구현시 scenedelegate iOS 13이상
SweetDev
2021. 6. 7. 13:56
AppDelegate말고
SceneDelegate의 이 함수에서 대응해줘야한다...
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if let incomingURL = userActivity.webpageURL {
print("Incoming URL is \(incomingURL)")
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { dynamicLink, error in
guard error == nil else {
print("Found an error \(error!.localizedDescription)")
return
}
if dynamicLink == dynamicLink {
// self.handelIncomingDynamicLink(_dynamicLink: dynamicLink!)
}
}
print(linkHandled)
}
}
그리고, FirebaseDynamicLinksCustomDomains에 https://~ 꼴로 적어줘야 한다.이것때매 날린 내 하루..
let linkBuilder = DynamicLinkComponents(link: (urlComponent?.url)!, domainURIPrefix: dynamicLinksDomainURIPrefix)!
DomainURIPrefix는 딱! URL부분만 써줘야한다. 뒤쪽 Path가 붙으면 안된다.
앱 처음 킬 때도 딥링크가 적용이 되려면,
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let userActivity = connectionOptions.userActivities.first {
self.scene(scene, continue: userActivity)
} else {
self.scene(scene, openURLContexts: connectionOptions.urlContexts)
}
}
이것도 써줘야 한다.