[Flutter] 다이나믹 링크(딥 링크) 기능 개발 (Android)

flutter 프로젝트에서 파이어베이스를 이용해 다이나믹 링크(딥 링크) 기능을 개발하는 방법을 알아보겠습니다. 아래의 순서대로 설정을 하시고 코드를 추가하시면 됩니다. –

Android 편

1.

파이어베이스 프로젝트를 생성하고

사이드바의 다이나믹 링크 버튼을 찾아 클릭한다.

구글에서 제공하는 무료 도메인 example.page.link 을 사용하기로 한다면,

example에 본인이 원하는 이름을 입력한다.

2.

다음과 같은 화면에서

⋮ 을 눌러 허용도메인 버튼을 누른다.

위에서 본인이 정한 example.page.link와 앱 소개 랜딩페이지나 회사 웹사이트 등을 입력한다.

3

새 동적 링크 버튼을 클릭해서 여기서 다이나믹 링크를 아래 처럼 만들어서 직접 복사해서 카톡 등으로 공유해줘도 된다.

(이 포스팅에서는 이방법 보단 앱에서 동적링크를 만드는 방법을 소개하겠다.)

4

pub.dev에서

firebase_dynamic_links를 찾아 pubspec.yaml파일에 아래 그림과 같이 추가한다.

5.

AndroidManifest.xml 파일에서 Activity 하위 인텐트 필터 부분에 추가

<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.page.link" android:scheme="http"/>
  <data android:host="example.page.link" android:scheme="https"/>
  <data android:host="website.com" android:scheme="http"/>
  <data android:host="website.com" android:scheme="https"/>
</intent-filter>

6.

아래와 같이 다이나믹 링크 수신 부분을 Listen해준다.

  initDynamicLinks() async {
    debugPrint('initDynamicLinks');
    FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
      final Uri deepLink = dynamicLinkData.link;

      if (deepLink != null) {
        // do something
      }
    }).onError((error) {
    });

    final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
    final Uri? deepLink = data?.link;


    if (deepLink != null) {
      Get.toNamed('/');
    }
  }

7.

다이나믹링크 생성 메소드를을 만들어준다.

  Future<void> createDynamicLink(bool short) async {

    Uri? url;  //생성할 url 여기에 저장
    final String androidFallBackUrl =
      'https://play.google.com/store/apps/details?id=com.examplebundleid'; //id에 안드로이드 번들id
    final String iosFallBackUrl =
      'https://apps.apple.com/kr/app/abcdef/id166666666'; //id뒤에 앱 스토어id를 입력
    debugPrint('createDynamicLink');
      _isCreatingLink = true;

    final DynamicLinkParameters parameters = DynamicLinkParameters(
      link: Uri.parse('https://example.page.link'), // 파이어베이스에서 생성한 무료 도메인 이나 앱 소개 랜딩페이지
      uriPrefix: 'https://example.page.link', // 파이어베이스에서 생성한 도메인
      androidParameters: AndroidParameters(
        packageName: 'com.examplebundleid', //안드로이드 번들 id
        minimumVersion: 0,
        fallbackUrl: Uri.parse(androidFallBackUrl),  //앱 설치가 안되어있을 때 플레이 스토어로 보낸다.
      ),
      iosParameters: IOSParameters(
        bundleId: 'com.examplebundleid-ios',  //iOS 번들 id
        minimumVersion: '0',
        appStoreId: '166666666', //앱스토어 id 
        fallbackUrl: Uri.parse(iosFallBackUrl), // 아이폰에서 앱이 설치 안되어있을 때 앱스토어로 보낸다.
      ),
    );


    if (short) {
      final ShortDynamicLink shortLink =
      await dynamicLinks.buildShortLink(parameters);  //짧은 링크를 만든다.
      url = shortLink.shortUrl;   
    } else {
      url = await dynamicLinks.buildLink(parameters);  //긴 링크를 만든다.
    }


      debugPrint('createDynamicLink, url : $url');
  }

8.

앱 시작할 때,

initDynamicLinks()를 해준후

다이나믹 링크를 만들고 싶은 화면에서 버튼을 생성해

버튼 클릭시 createDynamicLink() 메쏘드가 호출되도록 한다.

그리고 생성된 url을 print로 찍어서 복사 한뒤 메모장이나 카톡 등에 붙여넣고 클릭하면

앱이 열리는 것을 볼 수 있다.

추후에 이 url을 공유 기능을 통해 카톡이나 인스타 등으로 공유하면 된다.

1 thought on “[Flutter] 다이나믹 링크(딥 링크) 기능 개발 (Android)”

Comments are closed.