Flutter 에서 앱 종료 상태에서 Dynamic Link가 전달되지 않을 때 (iOS)

Flutter 에서 dynamic link (v4.1.1) 모듈을 적용해 보면

  1. 앱이 없을 때 다운로드 하고 설치 후 실행될 때 딥링크가 전달된다.
  2. 앱이 종료상태에 있을 때 (링크를 클릭하면) 앱이 실행되고 딥링크가 전달된다.
  3. 앱이 백그라운드 상태에 있을 때 (링크를 클릭하면) 앱이 실행되고 딥링크가 전달된다.

이렇게 동작하기를 기대하는데, 2번은 잘 안된다. 가이드에 따르면

final PendingDynamicLinkData initialLink =
        await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
  movePage(initialLink.link);
}

initialLink에서 전달될 것으로 기대되지만 2번의 경우 항상 null이 리턴된다.


그래서,
앱이 실행될 때 전달된 Universal Link를 직접 가지고 오도록 하여 처리했다. uni_link 라이브러리를 사용했고 다음과 같이 처리했다.

final PendingDynamicLinkData initialLink =
        await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
  movePage(initialLink.link);
  return;
}

final String deepLink = await getInitialLink();
if (deepLink != null && deepLink.isNotEmpty) {
  FirebaseDynamicLinks.instance
      .getDynamicLink(Uri.parse(deepLink))
      .then((link) => movePage(link.link));
}

좋은 웹페이지 즐겨찾기