생성 한 Firebase 동적 링크를 받으려면 앱에 동적 링크 SDK를 포함하고 앱이 로드될 때 FirebaseDynamicLinks.getDynamicLink()
메서드를 호출하여 동적 링크에 전달된 데이터를 가져와야 합니다.
Firebase 및 동적 링크 SDK 설정
아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .
앱을 등록할 때 SHA-1 서명 키를 지정합니다. 앱 링크를 사용하는 경우 SHA-256 키도 지정합니다.
모듈(앱 수준) Gradle 파일 (일반적으로
<project>/<app-module>/build.gradle
)에서 동적 링크 Android 라이브러리에 대한 종속성을 추가합니다. Firebase Android BoM 을 사용하여 라이브러리 버전 관리를 제어하는 것이 좋습니다.동적 링크에 대한 최적의 환경을 위해 Firebase 프로젝트에서 Google Analytics를 활성화 하고 Google Analytics용 Firebase SDK를 앱에 추가하는 것이 좋습니다.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.
(대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가
Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.
(대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가
Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.2.0' }
- Firebase 콘솔 에서 동적 링크 섹션을 엽니다. 메시지가 표시되면 서비스 약관에 동의합니다.
딥 링크용 인텐트 필터 추가
일반 딥 링크 와 마찬가지로 앱의 딥 링크를 처리하는 활동에 새로운 인텐트 필터를 추가해야 합니다. 인텐트 필터는 앱이 설치된 경우 동적 링크가 도메인으로 리디렉션되기 때문에 도메인의 딥 링크를 포착해야 합니다. 이것은 앱이 Play 스토어에서 설치/업데이트되고 계속 버튼을 한 번 탭한 후 동적 링크 데이터를 수신하는 데 필요합니다.
AndroidManifest.xml
에서:<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.com" android:scheme="https"/> </intent-filter>
사용자가 지정한 스킴 및 호스트에 대한 딥 링크가 있는 동적 링크를 열면 앱이 링크를 처리하기 위해 이 인텐트 필터로 활동을 시작합니다.
딥 링크 처리
딥 링크를 수신하려면
getDynamicLink()
메서드를 호출합니다.Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: 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) }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { @Override public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { // Get deep link from result (may be null if no link is found) Uri deepLink = null; if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.getLink(); } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... // ... } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "getDynamicLink:onFailure", e); } });
getIntent().getData()
를 사용하여 인텐트에서 링크를 사용할 수 있더라도 링크로 시작할 수 있는 모든 활동에서getDynamicLink()
를 호출해야 합니다.getDynamicLink()
를 호출하면 링크가 검색되고 해당 데이터가 지워지므로 앱에서 한 번만 처리됩니다.일반적으로 기본 활동과 링크와 일치하는 인텐트 필터에 의해 시작된 모든 활동에서
getDynamicLink()
를 호출합니다.기록 분석
다음 이벤트는 Google 애널리틱스에서 자동으로 추적되고 Firebase 콘솔에 표시될 수 있습니다.
-
dynamic_link_app_open
-
dynamic_link_first_open
-
dynamic_link_app_update
이러한 이벤트를 등록하려면 딥 링크를 검색하기 전에 Google 애널리틱스를 구성해야 합니다. 다음 조건이 충족되는지 확인합니다.
- 앱 진입점에서
FirebaseDynamicLinks.getDynamicLink()
를 호출합니다. - 런처 활동. 예:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - 활동 진입점. 예:
onStart()
,onCreate()
. - 딥링크 활동.
- Google 애널리틱스 설정 및 사용:
- Google 애널리틱스 종속성을 포함합니다. 이것은 일반적으로
google-services
Gradle 플러그인에 의해 자동으로 추가됩니다. - 앱에
google-services.json
구성 파일을 포함합니다 . -
FirebaseAnalytics.getInstance()
FirebaseDynamicLinks.getDynamicLink()
호출하십시오.
앱 링크를 사용하여 동적 링크 처리
Android 6.0(API 레벨 23) 이상에서는 Android 앱 링크 를 사용하여 앱이 이미 설치된 경우 동적 링크를 직접 처리하도록 앱을 설정할 수 있습니다.
Firebase 콘솔 에서 앱의 SHA256 인증서 지문을 프로젝트에 추가했는지 확인하세요. 동적 링크는 동적 링크 도메인에 대한 앱 링크 웹사이트 연결 설정을 처리합니다.
동적 링크를 처리할 활동에 자동 확인 인텐트 필터를 추가하여 호스트를 Firebase 콘솔에 있는 프로젝트의 동적 링크 도메인으로 설정합니다.
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/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
android:host
는 딥 링크의 도메인이 아닌 동적 링크 도메인으로 설정해야 합니다.앱 링크가 작동하려면 매니페스트의 모든
autoVerify
텐트 필터를 등록해야 합니다. Firebase는 동적 링크 도메인에 대해 이를 자동으로 처리하지만 동적 링크 도메인에서 호스팅되는assetlinks.json
파일을 열어 이를 확인할 수 있습니다.https://YOUR_DOMAIN/.well-known/assetlinks.json
모든 Firebase 앱의 패키지 이름이 포함되어야 합니다.이제 동적 링크가 앱으로 직접 전송됩니다. 앱 링크 인텐트 필터를 추가한 활동에서
getDynamicLink()
를 호출하여 딥 링크 및 기타 동적 링크 데이터를 가져올 수 있습니다( 딥 링크 처리 에 설명됨).참고: 앱 링크를 통해 호출하면 사용자가 앱으로 직접 이동하므로 동적 링크는 필요한 최소 버전을 따를 수 없습니다. 따라서 앱이 열리면 Dynamic Link의 최소 버전( getminimumappversion )을 PackageInfo.versionCode 와 비교하고 필요한 경우 getUpdateAppIntent 를 사용하여 앱을 업그레이드하도록 사용자를 리디렉션해야 합니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
Last updated 2023-02-03 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"필요한 정보가 없음" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"너무 복잡함/단계 수가 너무 많음" },{ "type": "thumb-down", "id": "outOfDate", "label":"오래됨" },{ "type": "thumb-down", "id": "translationIssue", "label":"번역 문제" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"샘플/코드 문제" },{ "type": "thumb-down", "id": "otherDown", "label":"기타" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"이해하기 쉬움" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"문제가 해결됨" },{ "type": "thumb-up", "id": "otherUp", "label":"기타" }]