잘못된 부분, 바꾸면 더 좋을 부분이 있다면 댓글 부탁드리겠습니다. :)
라이브러리 설치
npm i @react-native-firebase/dynamic-links
프로젝트선택후 좌측메뉴에서 참여 > Dynamic Links
도메인은 커스텀으로 만들 수도 있고 구글에서 제공하는걸 그냥 사용할 수도 있다. input창을 포커스하면 하단 추천 도메인이 보인다.
프로젝트/android 위치에서 다음 명령어를 이용해 SHA-256 인증서 지문을 구한다.
./gradlew signingReport
firebase 프로젝트 설정에 들어가 Android앱을 선택하고 인증서 지문을 추가한다.
(디버그, 릴리즈 두 값을 모두 등록하고 작업 후 디버그 값을 삭제했습니다.)
firebase 프로젝트 설정에서 Apple앱을 선택후 App Store ID와 팀ID를 설정한다.
App Store ID : 앱 스토어 url에서 확인할 수 있다. 스토어에 업로드 된 프로젝트의 url을 보면 /id12345678 처럼 되어있다.
팀 ID : App Store Connect 로그인 후 우상단에서 프로필 편집을 들어가면 확인 할 수 있다.
Apple Developer > Account > Certificates, Identifiers & Profiles > Identifiers > 프로젝트의 Identifier를 선택해 Associated Domains를 활성화
프로젝트 > TARGETS > Signing & Capabilities > +Capability
Associated Domains 추가
도메인 추가
applinks:프리픽스 링크 (위에서 생성한 링크)
저는 추가한 동적 링크를 입력했습니다.(firebase 콘솔에서 작업한 링크)
링크를 생성하는 방법은
1.Firebase 콘솔
2.Dynamic Link Builder API (Android, iOS, Flutter)
3.REST API
4.수동
총 네가지 방식이 있고 이 글에선 firebase와 REST API를 사용해 만든다
링크 트랙킹 성능 추적이 쉽다.
SNS에서 공유할 프로모션 링크를 만드는 경우에 유용하다
firebase console > 참여 > Dynamic Links > 새 동적 링크
빌더 API가 없어도 Dynamic Link를 생성할 수 있다.
링크를 커스텀하기에 용이하다
const uriKey = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=웹API키`
export const makeDynamicLink = async (params:string ,value:string) => {
const {data} = await axios({
method: 'post',
url: uriKey,
data: {
dynamicLinkInfo: {
domainUriPrefix: '프리픽스URL',
link: `프리픽스URL/${params}=${value}`,
androidInfo: {
androidPackageName: '안드로이드패키지명',
},
iosInfo: {
iosBundleId: 'ios번들id',
},
socialMetaTagInfo: {
socialTitle: '공유 카드 제목',
socialDescription: '공유 카드 부제목',
socialImageLink: '이미지 링크',
},
},
suffix: {
option: 'SHORT',
},
},
});
return data.shortLink;
};
만들어진 링크는 react-native-share라이브러리르 통해 공유해줬다.
(React Native에서 제공하는 Share API는 ios에서만 url 공유가 가능했다)
import {
firebase,
FirebaseDynamicLinksTypes,
} from '@react-native-firebase/dynamic-links';
...
useEffect(() => {
const unsubscribe = firebase.dynamicLinks().onLink(link => {
// foregounrd 링크 로직
});
return () => unsubscribe();
}, []);
...
import {
firebase,
FirebaseDynamicLinksTypes,
} from '@react-native-firebase/dynamic-links';
...
useEffect(() => {
firebase
.dynamicLinks()
.getInitialLink()
.then(async url => {
// background & quit 링크 로직
console.log(background & quit)
console.log(url)
});
}, []);
...
생성된 링크를 타고 들어가면 아래처럼 파라미터값이 잘 들어오는것을 확인 할 수 있다.
https://firebase.google.com/docs/dynamic-links/create-links?hl=ko
https://rnfirebase.io/dynamic-links/usage
https://velog.io/@dody_/RN-Dynamic-Link-%EB%B6%99%EC%9D%B4%EA%B8%B0