앱 공유하기 - 1. Firebase Dynamic Link

나고수·2022년 4월 25일
0

1일1공부

목록 보기
29/68

앱을 링크로 공유하는 방법(딥링크 만드는 방법)
1. uri scheme
2. 앱링크 - 도메인 주소 사용
3. firebase Dynamic Link -

  • 도메인주소 없이 구글이 제공하는 도메인으로 앱링크를 사용할 수 있다.
  • 앱 설치 여부에 관계없이 안드로이드 , ios 상관없이 하나의 링크로 컨트롤 가능하다.

방법

SHA-1 서명 키를 지정 하는 법 :

gralde 코끼리를 누르고 'signingReport' 입력

동적링크 생성

프리픽스 추가:

프리픽스가 없으면 만든다. 구글이 제공해주는 도메인을 사용하면 된다.

사용자가 볼 url

android manifest에 설정할 intent filter


앱에서 동적링크 수신

  1. firebase gradle 추가
  2. manifest.xml
링크를 클릭했을때 열리기를 원하는 액티비티에 intent 설정
<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:path"/main"
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>
  1. 딥링크 알아내기, 처리하기
  • getIntent().getData()를 사용하여 인텐트에서 링크를 알아낼 수도 있지만, 링크로 인해 실행될 수 있는 모든 활동에서 getDynamicLink()를 호출해야 합니다. getDynamicLink()를 호출하면 링크가 검색되고 데이터가 삭제되므로 앱에서 한 번만 처리됩니다.
    일반적으로 메인 활동뿐 아니라 링크와 일치하는 인텐트 필터가 실행하는 모든 활동에서 getDynamicLink()를 호출합니다.
  • 해당 앱이 깔려있다면 앱으로, 깔려있지 않다면 구글플레이스토어로 이동합니다.
Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            // Get deep link from result (may be null if no link is found)
            var deepLink: Uri? = null
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link
            }
            // Handle the deep link. For example, open the linked
            // content, or apply promotional credit to the user's
            // account.
            // 원하는 구현 처리 
            // ...
        }
        .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
      val clipboard = context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
            val clip: ClipData = ClipData.newPlainText("appUrl", "https://worlde.page.link/Tbeh")
            clipboard.setPrimaryClip(clip)
            Toast.makeText(context, "링크가 복사되었습니다.", Toast.LENGTH_SHORT).show()

저는 그냥 버튼을 누르면 링크가 복사되게 구현 했습니다.

profile
되고싶다

0개의 댓글