Swift

Firebase Dynamic Link

반다이크 2022. 2. 25. 16:01
반응형

Firebase Dynamic Link

  • Firebase Dynamic Link는 해당 링크를 클릭시 해당 앱으로 보내주는 방식

1.Firebase 콘솔에서 앱을 추가

 

##자세한 앱등록 방법은 FCM, APNS 게시글 참고

https://vandijk.tistory.com/4

 

 

 

#App Store ID, Team ID 필수 입력 (*App Store ID 없을때는 임의 입력)

 

2.Firebase console에서 동적 링크 생성

 

1-1url 프리픽스 생성

 

1-2 구글 무료 제공 도메인 링크 추가(page.link 형식)

 

 

1-2 새 동적링크 생성

 

 

****동적링크 생성전 허용 패턴 지정 필요

클릭

 

도메인 설정

 

 

1-3 만들어진 프리픽스에 임의 단어 입력

 

 

1-4 딥링크 URL

 

#실제 존재하는 url이 아니어도 가능

#원하는 데이터를 url형식으로 입력

 

#key: data1, value: deepLinkData1

#key: data2, value: deepLinkData2

 

 

1-5 애플 링크 동작 정의

 

#4번 안드로이드용 링크 동작 default값

#5번 default 값

 

 

1-6 생성 완료

#박스 안 url 링크는 해당 앱이 이동하기 위한 중간 지점이자 앱으로 갈 경로를 담고 있음

 

1-7

 

3.Firebase Dynamic Link를 수신 코드

1-1 Associated Domain 추가

 

- url Prefix 중 https:// 를 제외한 값을 추가

**applinks:commonreference.page.link


1-2(1) Appdelegate 코드 추가



1-2(2) SceneDelegate 코드 추가

 



포그라운드

 // MARK: Dynamic link 수신
    public func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
        if let urlPrefix = userActivity.webpageURL {
            DynamicLinks.dynamicLinks().handleUniversalLink(urlPrefix) { (dynamicLink, error) in
                guard error == nil else { return }
                if dynamicLink == dynamicLink {
                    self.parsingDynamicLink(dynamicLink: dynamicLink!)
                }
            }
        }
    }


func parsingDynamicLink(dynamicLink: DynamicLink) {
        guard let url = dynamicLink.url else { return }
        guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false), let queryItems = components.queryItems else {
            return
        }
        for queryItem in queryItems {
            print("name: ",queryItem.name)
            print("value: ",queryItem.value)
        }
    }

 

앱이 종료되어있을때

public func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {    
	//앱이 종료된 경우 Firebase dynamicLink
    for userActivity in connectionOptions.userActivities {
	    if let incomingURL = userActivity.webpageURL {
     	   DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
       		    guard error == nil else { return }
                if dynamicLink == dynamicLink {
   	   		         self.parsingDynamicLink(dynamicLink: dynamicLink!)
                }
           }   
	       break
   	    }
    }
}

 

4.테스트 방법

  • gmail로 Firebase에서 만들었던 url 프리픽스 링크 전달
  • 해당 링크 클릭시 해당 앱으로 이동

이상입니다.

반응형

'Swift' 카테고리의 다른 글

iOS 페이스북 로그인  (0) 2022.02.26
iOS 네이버 로그인  (0) 2022.02.26
iOS 카카오 로그인  (0) 2022.02.26
FCM, APNS 연동 방법  (3) 2022.02.25
URL Scheme 딥링크  (0) 2022.02.25