selfstarter

firebase android dynamic link 추가 본문

App/Android

firebase android dynamic link 추가

selfstarter 2020. 2. 7. 20:29

firebase android deeplink 추가

dynamic link란?

  • deferred deeplink는 ios, android link를 따로 만들어줘야 한다.dynamic link는 하나의 링크로 ios, android 사용할 수 있도록 deferred deeplink의 단점을 보완했다

firebase dynamic link 추가

  1. firebase 프로젝트 생성
  2. android일 경우 프로젝트 패키지명을 입력하면 firebase 인증 정보가 담긴 'google-services.json'파일을 다운로드 받을 수 있음. 프로젝트의 app폴더 안에 넣음
  3. firebase 왼쪽메뉴에서 deepLink를 눌러서 deepLink 생성
  4. 단축 URL이란 사용자가 볼 수 있고 공유하는 URL(xxxx.page.link는 firebase의 무료 도메인이다)
  5. 동적 링크 설정의 딥링크란 안드로이드 내부에서 host, scheme로써 사용되는 딥링크를 의미(같은 링크끼리는 마지막에 prefix를 다르게 해서 각 링크를 구분한다)
  6. Android용 링크 동작에서 딥 링크 열기를 선택하면, 앱이 설치되지 않았거나 특정 버전보다 낮은 경우 특정 url로 보낼 수 있다(웹 구글 플레이스토어 url을 넣으면 앱 구글 플레이스토어로 이동한다)
  7. 공유 개선을 위한 소셜 메타 태그 설정은 링크 설 요즘 링크 미리보기 정보를 추가한다. 보통 보면 링크 밑에 네모난 박스에 링크이름, 링크설명 그리고 이미지가 있는데 그것이다.
  8. UTM매개변수로 캠페인 추적은 애널리틱스에서 사용할 때 유용한 설정인 것 같다

프로젝트 firebase 설정 및 deeplink prefix로 구분하기

  1. build.gradle에서 buildscript-dependencies에 classpath 'com.google.gms:google-services:4.2.0' 추가
  2. build.gradle에서 dependencies 추가
    implementation 'com.google.firebase:firebase-database:16.0.5'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
    implementation 'com.google.firebase:firebase-core:15.0.2'
    implementation 'com.google.firebase:firebase-messaging:15.0.2'
    implementation 'com.google.firebase:firebase-invites:16.0.1'
    implementation 'com.google.firebase:firebase-dynamic-links:15.0.0'
    implementation "com.google.android.gms:play-services-base:15.0.1"
    implementation 'com.google.android.gms:play-services-auth:16.0.0'
  3. manifest에서 intent-filter, host, sheme 정의
    <activity android:name=".TestDeepActivity">
     <intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT" />
     <category android:name="android.intent.category.BROWSABLE" />
     <data android:host="example.page.link"
         android:scheme="https" />
     <data android:host="example.page.link"
         android:scheme="http" />
     </intent-filter>
    </activity>
  4. listener가 들어왔을 때 동작 정의
    private void processDeepLink() {
     FirebaseDynamicLinks.getInstance()
     .getDynamicLink(getIntent())
     .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>(){
         @Override
         public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
             // app으로 실행했을 경우(deeplink 없는 경우)
             if (pendingDynamicLinkData == null) {
                 Log.d(TAG, "No have dynamic link");
                 return;
             }
             //deeplink로 app 넘어 왔을 경우
             Uri deepLink = pendingDynamicLinkData.getLink();
             String segment = deepLink.getLastPathSegment();
             Intent intent = null;
             switch (segment) {
                 case "bank":
                     intent = new Intent(TestDeepActivity.this, BankActivity.class);
                     startActivity(intent);
                     finish();
                 break;
                 case "event":
                     intent = new Intent(TestDeepActivity.this, EventActivity.class);
                     startActivity(intent);
                     finish();
                 break;
             }
         }
     })
     .addOnFailureListener(this, new OnFailureListener() {
         @Override
         public void onFailure(@NonNull Exception e) {
         }
     });
    }
Comments