티스토리 뷰
먼저 Firebase에서 메뉴얼에 맞게 프로젝트를 생성한다.
그 다음 Dynamic Links > 시작하기를 눌러서 dynamic links를 만든다.

시작하기를 누르면 아래와 같이 URL 프리픽스를 추가하라고 하는데 도메인이 없는 경우 "https://your_subdomain.page.link"로 직접 작성하여 동적링크를 만들 수 있다.
동직 링크 URI 직접 만들기 : https://firebase.google.com/docs/dynamic-links/create-manually?hl=ko
동적 링크 URL 직접 만들기 | Firebase
다음 형식으로 URL을 직접 작성하여 동적 링크를 만들 수 있습니다. https://your_subdomain.page.link/?link=your_deep_link&apn=package_name[&amv=minimum_version][&afl=fallback_link] 동적 링크 매개변수 딥 링크 매개변수(페이로드 매개변수) link 앱에서 열리는 링크입니다. 앱이 처리할 수 있는 URL(일반적으로 앱의 콘텐츠 또는 페이로드)을 지정할 수 있으며, 이를
firebase.google.com
앱 처럼 도메인이 없는 경우 무료로 제공해주는 page.link를 쓰면 된다.

다음과 같이 생성되면 새 동적 링크를 클릭한다.

단축 URL링크는 짧은 URL을 사용할 때 사용되는 URL이다.
제공되는 것을 사용해도 되고 사용자가 정의해도 된다.

딥 링크 URL을 정의한다.
앱 설치 여부에 관계없이 앱으로 연결되는 딥 링크이다.

적용할 안드로이드 앱을 선택한다.

다음과 같이 생성된다.

다음은 안드로이드 스튜디오이다.
Firebase에서 제공해주는 개발자 문서가 정말 잘 되어 있어서 그대로 따라하면 된다.
동적 링크를 만드는 방법은 다음과 같다.
https://firebase.google.com/docs/dynamic-links/android/create?authuser=0&hl=ko
Android에서 동적 링크 만들기 | Firebase
Firebase Dynamic Links Builder API를 사용하여 짧거나 긴 동적 링크를 만들 수 있습니다. 이 API는 긴 동적 링크 또는 동적 링크 매개변수가 들어 있는 객체를 취하며 다음 예와 같은 URL을 반환합니다. https://example.com/link/WXYZ https://example.page.link/WXYZ Firebase 및 동적 링크 SDK 설정 Android 앱에서 동적 링크를 만들려면 우선 Firebase SDK를
firebase.google.com
딥 링크를 처하는 코드는 다음과 같다.
https://firebase.google.com/docs/dynamic-links/android/receive?authuser=0
Android에서 Firebase 동적 링크 수신 | Firebase
생성한 Firebase 동적 링크를 수신하려면 앱에 동적 링크 SDK를 포함하고, 앱이 로드될 때 FirebaseDynamicLinks.getDynamicLink() 메서드를 호출하여 동적 링크로 전달된 데이터를 가져와야 합니다. Firebase 및 동적 링크 SDK 설정 아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다. 앱을 등록할 때 SHA-1 서명 키를 지정합니다. 앱 링크를 사용하는 경우에도 SHA-256 키를 지정합니
firebase.google.com
다음은 실제로 적용한 코드이다.
[AndroidManifest.xml]
<intent-filter android:autoVerify="true">
<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.com"
android:scheme="https" />
<data
android:host="example.com"
android:scheme="http" />
</intent-filter>
[DeepLink.java]
코드에서는 heetest가 아닌 다른 url을 사용하여 구현하였다. (실제사용)
public class DeepLink extends AppCompatActivity {
private static final String TAG = "FORBABY";
private static final String SEGMENT_CHECK = "check"; //deep link uri에 있는 segment
private static final String KEY_CODE = "key"; //deep link uri에 있는 key(인증 key)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deep_link);
handleDeepLink();
findViewById(R.id.btn_share_dynamic_link).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createDynamicLink();
}
});
}
private void createDynamicLink() {
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(getCheckDeepLink()) //정보를 담는 json 사이트를 넣자!!
.setDynamicLinkDomain("7depromeet.page.link")
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder(getPackageName()).build())
.buildDynamicLink();
Uri dylinkuri = dynamicLink.getUri(); //긴 URI
Log.d(TAG, "long uri : " + dylinkuri.toString());
//짧은 URI사용
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLongLink(dylinkuri)
.buildShortDynamicLink()
.addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
Log.d(TAG, "short uri : " + shortLink.toString()); //짧은 URI
} else {
Log.w(TAG, task.toString());
}
}
});
}
private void handleDeepLink() {
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();
Log.d(TAG, "deepLink: " + deepLink);
String segment = deepLink.getLastPathSegment();
//uri에 있는 key값 가져오기
switch (segment) {
case SEGMENT_CHECK:
String code = deepLink.getQueryParameter(KEY_CODE);
showCheckDialog(code); //임의로 dialog로 key값 띄움
break;
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "getDynamicLink:onFailure", e);
}
});
}
//확인용 다이얼로그
private void showCheckDialog(String code) {
new AlertDialog.Builder(this)
.setMessage("Receive check key: " + code)
.setPositiveButton("Confirm", null)
.create().show();
}
//deeplink uri만들기
private Uri getCheckDeepLink() {
// 인증 할 key값 생성 후 넣기
String keyCode = "AA123456";
return Uri.parse("https://example.com/" + SEGMENT_CHECK + "?" + KEY_CODE + "=" + keyCode); //example
}
[결과]
위의 3줄은 바로 앱을 사용했을 시 나오는 log값들이다.
long uri, short uri는 다음과 같다. short uri는 위에서 정의한 uri로 나온다.
마지막 줄은 short uri값을 클릭 했을 경우 딥링크를 통해 앱을 실행하게 되고 딥 링크에 있는 check key값을 받는다.



'Android' 카테고리의 다른 글
[Android]Context (0) | 2020.02.26 |
---|---|
[Android] ConstraintLayout을 사용하자 (0) | 2020.01.19 |
[Android] 안드로이드에서 상수관리 (0) | 2020.01.19 |
[Android] AndroidX Migration 후 xml inflating 오류 해결 (0) | 2020.01.10 |
[Android] Drawable VS Assets (0) | 2019.09.26 |
- Total
- Today
- Yesterday
- 백트래킹
- loss function
- 4-way-handshake
- 알고리즘
- algorithm
- Process Scheduling
- SRTN
- N-Queen
- SWExpert
- binarySearch
- 기능개발
- 프로세스 스케줄링
- programmers
- 네트워크
- MLQ
- 3-way-handshake
- Android
- 자료구조
- 사회망서비스
- 백 트래킹
- hash
- java
- 농협정보시스템IT
- MFQ
- 우선순위큐
- Objective function
- git
- DFS
- 프로그래머스
- hashtable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |