react native dynamic link를 이용한 앱 공유 | firebase

이동욱·2023년 2월 14일
1

react native firebase

목록 보기
3/4
post-thumbnail

잘못된 부분, 바꾸면 더 좋을 부분이 있다면 댓글 부탁드리겠습니다. :)

사전 작업

  1. firebase 연동

  2. 라이브러리 설치

npm i @react-native-firebase/dynamic-links

firebase 셋팅

프리픽스 생성


프로젝트선택후 좌측메뉴에서 참여 > Dynamic Links

도메인은 커스텀으로 만들 수도 있고 구글에서 제공하는걸 그냥 사용할 수도 있다. input창을 포커스하면 하단 추천 도메인이 보인다.

Android

1. sha-256 인증서 지문 구하기

프로젝트/android 위치에서 다음 명령어를 이용해 SHA-256 인증서 지문을 구한다.

./gradlew signingReport 

2. firebase에 추가

firebase 프로젝트 설정에 들어가 Android앱을 선택하고 인증서 지문을 추가한다.
(디버그, 릴리즈 두 값을 모두 등록하고 작업 후 디버그 값을 삭제했습니다.)

IOS

1. 팀 ID , App Store ID 추가하기

firebase 프로젝트 설정에서 Apple앱을 선택후 App Store ID와 팀ID를 설정한다.

App Store ID : 앱 스토어 url에서 확인할 수 있다. 스토어에 업로드 된 프로젝트의 url을 보면 /id12345678 처럼 되어있다.
팀 ID : App Store Connect 로그인 후 우상단에서 프로필 편집을 들어가면 확인 할 수 있다.


2. Associated Domain 활성화 체크

Apple Developer > Account > Certificates, Identifiers & Profiles > Identifiers > 프로젝트의 Identifier를 선택해 Associated Domains를 활성화


3. X Code

프로젝트 > TARGETS > Signing & Capabilities > +Capability

Associated Domains 추가

도메인 추가

applinks:프리픽스 링크 (위에서 생성한 링크)

저는 추가한 동적 링크를 입력했습니다.(firebase 콘솔에서 작업한 링크)

링크 생성해서 공유하기

링크를 생성하는 방법
1.Firebase 콘솔
2.Dynamic Link Builder API (Android, iOS, Flutter)
3.REST API
4.수동
총 네가지 방식이 있고 이 글에선 firebaseREST API를 사용해 만든다

1. firebase console에서 만들기

링크 트랙킹 성능 추적이 쉽다.
SNS에서 공유할 프로모션 링크를 만드는 경우에 유용하다

firebase console > 참여 > Dynamic Links > 새 동적 링크

  1. 단축 URL 링크 설정
    기본 제공 되지만 커스텀 가능하다
  2. 동적링크 설정
    딥 링크 URL: 데스크톱에서 클릭시 이동할 URL을 입력해준다 (모바일에서는 앱 이 있으면 앱 없으면 링크로 간다, 스토어로 가는건 이후 단계에서 설정할 수 있다.)
    동적 링크 이름: 해당 링크 트랙킹에 쓰이는 이름
  3. Apple용 링크 동작 정의
    앱의 App Store 페이지를 활성화 하면 앱이 없는 경우 스토어로 보낼 수 있다. (커스텀 Url도 가능하다)
  4. Android용 링크 동작 정의
    앱의 App Store 페이지를 활성화 하면 앱이 없는 경우 스토어로 보낼 수 있다. (커스텀 Url도 가능하다)
    IOS와 동일하게 해준다.
  5. 캠페인 추적, 소셜 태그, 고급 옵션(선택사항)

2. rest api로 만들기

빌더 API가 없어도 Dynamic Link를 생성할 수 있다.
링크를 커스텀하기에 용이하다

  1. 웹 API 키값 구하기
    firebase console > 프로젝트 선택 > 프로젝트 설정 > 웹API키 확인
  • 웹 API 키가 없는 경우.
    웹 API가 없고 위에 '이 프로젝트에 웹 API 키가 없습니다'가 적혀있다면 빌드 > Authentication > Sign-in method에서 이메일/비밀번호를 활성화 해주자
  1. DynamicLink 생성
    REST 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 공유가 가능했다)

Dynamic Link 받아서 처리하기

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

profile
프론트엔드

0개의 댓글