티스토리 뷰
먼저 Firebase에서 메뉴얼에 맞게 프로젝트를 생성한다.
그 다음 Dynamic Links > 시작하기를 눌러서 dynamic links를 만든다.
시작하기를 누르면 아래와 같이 URL 프리픽스를 추가하라고 하는데 도메인이 없는 경우 "https://your_subdomain.page.link"로 직접 작성하여 동적링크를 만들 수 있다.
동직 링크 URI 직접 만들기 : https://firebase.google.com/docs/dynamic-links/create-manually?hl=ko
앱 처럼 도메인이 없는 경우 무료로 제공해주는 page.link를 쓰면 된다.
다음과 같이 생성되면 새 동적 링크를 클릭한다.
단축 URL링크는 짧은 URL을 사용할 때 사용되는 URL이다.
제공되는 것을 사용해도 되고 사용자가 정의해도 된다.
딥 링크 URL을 정의한다.
앱 설치 여부에 관계없이 앱으로 연결되는 딥 링크이다.
적용할 안드로이드 앱을 선택한다.
다음과 같이 생성된다.
다음은 안드로이드 스튜디오이다.
Firebase에서 제공해주는 개발자 문서가 정말 잘 되어 있어서 그대로 따라하면 된다.
동적 링크를 만드는 방법은 다음과 같다.
https://firebase.google.com/docs/dynamic-links/android/create?authuser=0&hl=ko
딥 링크를 처하는 코드는 다음과 같다.
https://firebase.google.com/docs/dynamic-links/android/receive?authuser=0
다음은 실제로 적용한 코드이다.
[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
- algorithm
- 알고리즘
- 농협정보시스템IT
- 자료구조
- SRTN
- 기능개발
- Android
- loss function
- Process Scheduling
- MFQ
- 우선순위큐
- N-Queen
- 4-way-handshake
- 프로세스 스케줄링
- MLQ
- 사회망서비스
- DFS
- java
- 백 트래킹
- hash
- programmers
- 네트워크
- 3-way-handshake
- hashtable
- binarySearch
- SWExpert
- 백트래킹
- git
- 프로그래머스
- Objective function
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |