웹페이지에서 앱으로 전환 할 때
단순히 앱을 실행시키거나
앱 내의 특정 화면으로 바로 이동할 수 있게해주는 기능인
유니버셜 링크(안드로이드에서는 딥링크)의 기능을 좀 더 확장하여 사용 할 수 있게 해주는
FIrebase의 DynamicLink 사용법에 대해,
그 중에서도 링크 수신에 대해 알아본다.
cocoapods 설치
pod 'Firebase/DynamicLinks'
동적 링크 설정
firebase 문서에 잘 나와있어요~
동적 링크 열기
1. 도메인 추가
프로젝트 targets - Signing&Capabilities에서
'+Capability' 클릭 - Associated Domains를 추가합니다.
Domains에 'applinks:동적링크 도메인'을 입력해줍니다.(https:// 제외)
2. 동적 링크 수신을 위한 info.plist에 추가
Information Property List에 'FirebaseDynamicLinksCustomDomains' 추가
Type을 Array로 하여 아이템을 추가해줍니다.
아이템의 Type은 String Value는 동적링크 그대로 넣어줍니다.
동적 링크 처리 작업
1. AppDelegate파일에 firebase import
@import Firebase;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[FIRApp configure];
}
2. 유니버셜 링크를 구현한다면
'- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
'를 사용했겠지만,
외부에서 사용자의 활동을 감지해야 하므로
'- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
'이 함수를 이용합니다.
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
// 사용자가 접속하려는 페이지 url을 받아옴
NSURL * url = [NSURL URLWithString:userActivity.webpageURL.absoluteString.stringByRemovingPercentEncoding];
// 받아온 url 핸들러
BOOL handle = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) {
// url을 파싱
[self parsingDynamicLink:dynamicLink.url];
}];
return handle;
}
- (void)parsingDynamicLink:(NSURL *)url {
NSMutableDictionary *queryItemDic = [[NSMutableDictionary alloc] init];
// url을 파싱하여 url components을 가져옴
NSURLComponents * urlComponents = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:YES];
// url에서 query string으로 구분되어 받는 'query item 배열'을 얻어옴
NSArray * queryItems = [urlComponents queryItems];
// 쿼리아이템에서 키값을 딕셔너리에 저장
for (NSURLQueryItem * keyValue in queryItems) {
[queryItemDic setObject:keyValue.value forKey:keyValue.name];
}
}
QueryItems를 활용하여 작업 하면 끄읕
참고:
https://firebase.google.com/docs/dynamic-links/ios/receive
https://swieeft.github.io/2020/09/02/DynamicLinkGetQueryData.html
https://stackoverflow.com/questions/8756683/best-way-to-parse-url-string-to-get-values-for-keys
https://developer.apple.com/documentation/foundation/urlcomponents/1779966-queryitems
'iOS > iOS' 카테고리의 다른 글
PDFView (0) | 2022.04.11 |
---|---|
image scrolling(paging) & zoom (0) | 2022.04.04 |
Delegate 사용 (0) | 2022.03.28 |
뷰 계층 관리 (0) | 2022.03.25 |
UILable cornerRadius (0) | 2022.03.16 |
댓글