Android

URL로 App 설치 확인 후 App 또는 마켓으로 이동하기

끔깔 2019. 3. 27. 15:52

요구사항

 

  • URL 에는 특정 고객을 식별할 수 있는 고유 코드가 있으며 앱 내로 코드가 전달되어야 한다.
  • App 이 설치되어 있지 않은 경우에 App 설치 후 실행하면 기존 파라미터가 전달되어야 한다.
  • 안드로이드 뿐만 아니라 아이폰에서도 작동해야 한다.

 

Firebase Dynamic Links 

 

  • 링크를 수신한 사용자가 앱 내의 콘텐츠로 직접 이동

  • 앱을 설치하지 않은 사용자도 앱을 설치하고 시작하면 앱 내의 콘텐츠로 이동 가능

  • 도메인에 매개변수를 추가하여 앱 내에서 특정 작업 수행

 

해야 할 일

 

1.링크 만들기

 

  • 도메인은 5개까지 추가 가능하다

https://sample1.page.link

https://sample2.page.link

https://sample3.page.link

https://sample4.page.link

https://sample5.page.link

 

 

  • 링크를 특정 사용자용으로 지정하려는 경우 매개변수를 추가할 수 있다

?gameid%3D1234%26referrer%3D55

 

 

  • 단축 URL 생성이 가능하다

https://example.page.link/?link=https://www.example.com/invitation?gameid%3D1234%26referrer%3D555&apn=com.example.android&ibi=com.example.ios&isi=12345

->

https://example.page.link/WXYZ

 

 

2.링크 수신 및 처리

 

링크를 수신하려면 iOS 또는 Android 프로젝트에 동적 링크 SDK 추가 및 설정 필요

앱 설치 여부는 동적 링크가 판단하므로 추가 작업 필요 X

 


 

도메인 생성

 

 

링크 생성

 

딥 링크 파라미터 아이디 test1234 는 변경 가능하다.

 

 


안드로이드 프로젝트 적용 방법

 

1.프로젝트에 google-services.json 파일 추가

 

2.build.gradle

3.AndroidManifest.xml 

1
2
3
4
5
6
7
8
<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="newtypedev.com"
android:scheme="https"/>
</intent-filter>
 

 

4.MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    private void showLink() {
        FirebaseDynamicLinks.getInstance()
                .getDynamicLink(getIntent())
                .addOnSuccessListener(thisnew OnSuccessListener<PendingDynamicLinkData>() {
                    @Override
                    public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                        if (pendingDynamicLinkData == null) {
                             Toast.makeText(MainActivity.this,"null",Toast.LENGTH_LONG).show();
                            return;
                        }
                        else{
                                Uri deepLink = pendingDynamicLinkData.getLink();
                                Toast.makeText(MainActivity.this,deepLink+"",Toast.LENGTH_LONG).show();
                        }
 
                    }
                })
                .addOnFailureListener(thisnew OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                           Toast.makeText(MainActivity.this,"fail",Toast.LENGTH_LONG).show();
                    }
                });
    }