
https://docs.flutter.dev/cookbook/navigation/set-up-app-links
모든 단계는 플러터 공식 문서를 따라가고 있으니 문서를 보면서 참고하면 좋다:)
👉 github.io 빠르게 만드는 방법: https://pages.github.com/
먼저 android/app/src/main/AndroidManifest.xml파일에 아래처럼 태그를 추가한다.
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
<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:scheme="http" android:host="example.com" />
<data android:scheme="https" />
</intent-filter>
플러터 앱 프로젝트 내에 생성하는 것이 아니라, 웹 프로젝트에 생성해야한다!
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.deeplink_cookbook",
"sha256_cert_fingerprints":
["FF:2A:CF:7B:DD:CC:F1:03:3E:E8:B2:27:7C:A2:E3:3C:DE:13:DB:AC:8E:EB:3A:B9:72:A1:0E:26:8A:F5:EC:AF"]
}
}]
android {
namespace "com.exapmle"
엄청 생소해보이지만 그냥 연결해주고 싶은 앱과 디바이스에 설치된 앱이 같은 앱인지 확인하기 위한 지문이라고 생각하면 된다.
🚨 Google Play 앱 서명 키와 업로드 키는 다르니 꼭 서명키로 확인해야 한다.
🚨 서명키가 없다면 아래 명령어를 통해 확인할 수 있다.
adb shell pm get-app-links com.example.app
잊지 말고 웹 프로젝트도 push 를 해주고! 앱 프로젝트는 저장하고, 아래 명령어로 애뮬레이터에서 테스트를 해보자.
adb shell 'am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://<web-domain>/details"' \
<package name>
앱 미설치 시에 우리가 임시로 만든 웹페이지로 잘 떨어지고, 앱 설치시에 앱이 잘 열린다면 성공이다:)
실기기에서 테스트할 때는 안드로이드는 메모장 앱이 따로 없어서 문자 메시지에 링크를 넣어 테스트를 했다.
이 파일은 만약 유저의 디바이스에 앱이 있다면 브라우저 대신 어떤 안드로이드 앱을 열 것인지 유저의 브라우저에 알려주는 역할을 한다.
그래서 지문이 맞지 않으면 App Link가 실행되지 않는다.
- 앱이 설치된 경우: 도메인과 앱 간의 신뢰 관계가 설정되었기 때문에, 사용자가 링크를 클릭하면 Android는 해당 링크를 처리하기 위해 앱을 연다.
- 앱이 설치되지 않은 경우: 신뢰 관계가 없다면, Android는 웹 브라우저에서 해당 링크를 열도록 처리한다.