App Links에 적합

11248 단어 applinksAndroid

Android App Links


정부 정보
https://developer.android.com/training/app-links/
간단한 이해는 한 서비스에 대해 웹과 안드로이드 응용 프로그램이 있다면
Android 터미널에서 다른 응용 프로그램에서 URLhttps://(自分のWebサイト)...으로 변환할 때 응용 프로그램이 설치되어 있으면 응용 프로그램으로 변환합니다.
그렇습니다.

이루어지다


금번
http://my-android-server.appspot.com/html/list.html?page_no=1&open=2
그러면
https://play.google.com/store/apps/details?id=hm.orz.chaos114.android.tumekyouen
의 응용 프로그램 2단계 화면이 표시됩니다.

먼저, intent-filter 설치


정부 정보
https://developer.android.com/training/app-links/deep-linking
이번에는 안드로이드 매니페스트.xml에서 다음과 같이 설정합니다.
        <activity
            android:name=".modules.initial.InitialActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <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="my-android-server.appspot.com"
                    android:pathPrefix="/html/list.html"
                    android:scheme="http"/>
            </intent-filter>
        </activity>
두 번째 intent-filterhttp://my-android-server.appspot.com/html/list.html부터 시작하는 URL을 실행할 때
라는 뜻이다.
이로써 다음 명령을 실행하면 프로그램이 시작됩니다.(조개껍질이 없을 수도 있음" 또는 \
adb shell am start -W -a android.intent.action.VIEW -d "http://my-android-server.appspot.com/html/list.html?page_no=1\&open=2"
다만
  • 애플리케이션만 시작하고 대상 화면으로 이동하지 않음
  • 시작 시 브라우저 또는 임의의 응용 프로그램 선택 화면 표시
  • 의 상태입니다.순서대로 해결하다.

    시작할 때 URL에서 모든 화면으로 이동


    정부 정보
    https://developer.android.com/training/app-links/deep-linking#handling-intents
    intent-filter가 추가된Activity에서getIntent의 반환값을 이용하여 이전합니다.
    나는 이곳이 응용 프로그램에 따라 매우 큰 변화가 있을 것이라고 생각한다.
    기본적으로 시도getIntent().getData()해보면null이면 일반적인 이동이 되고, 값이면 URL을 분석하여 대상의 화면으로 이동한다.
    이번에는 https://github.com/noboru-i/kyouen-android/commit/362ccff367b4bc24ac91b5c2abd9c130b34abee8#diff-ae9d6323f6b1c38043ae5931c6049b56처럼 실시되었다.

    프로그램 선택 화면 건너뛰기


    정부 정보
    https://developer.android.com/training/app-links/verify-site-associations
    이번 주제야.
    우선 안드로이드 측 intent-filter에 추가android:autoVerify="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:host="my-android-server.appspot.com"
                        android:pathPrefix="/html/list.html"
                        android:scheme="http"/>
                </intent-filter>
    
    이어서 서버 측.
    정부 정보
    https://developer.android.com/training/app-links/verify-site-associations#web-assoc
    (예를 들어 https://www.google.co.jp/.well-known/assetlinks.json 다른 명역의 물건은 참고할 수 있다.).well-known/assetlinks.json 라는 파일을 만들었습니다. 내부는 다음과 같습니다.
    [
        {
            "relation": ["delegate_permission/common.handle_all_urls"],
            "target": {
                "namespace": "android_app",
                "package_name": "hm.orz.chaos114.android.tumekyouen.debug",
                "sha256_cert_fingerprints":
                ["C0:D7:F9:34:D8:F7:15:06:FA:21:FA:0D:CF:09:E5:C4:E2:66:D4:11:5D:72:E0:D7:B8:38:F9:49:AB:C7:A4:F0"]
            }
        },
        {
            "relation": ["delegate_permission/common.handle_all_urls"],
            "target": {
                "namespace": "android_app",
                "package_name": "hm.orz.chaos114.android.tumekyouen",
                "sha256_cert_fingerprints":
                ["6E:5A:DB:69:B4:C3:28:AC:DA:7F:00:A7:4D:5D:CD:F9:ED:87:0B:5D:D2:71:C5:89:64:DF:13:38:5A:5B:B8:A2"]
            }
        }
    ]
    
    우선 공식 정보의 샘플을 복제하고 debug용 패키지 이름과 정식으로 사용되는 패키지 이름을 적용했다.
    이후 키스토어별로 실행keytool -list -v -keystore app/cert/debug.keystore 등 붙여넣기SHA256한 결과가 나왔다.
    이것은 https://my-android-server.appspot.com/.well-known/assetlinks.json 로 방문할 수 있습니다.
    이번에는 서버 측이 GAE에서 이동하기 때문에 https://github.com/noboru-i/kyouen-python/pull/18/files로 설정되었습니다..well-known/assetlinks.json 이런 파일을 그대로 전송Directory matches ignore regex.하면 업로드할 수 없기 때문에 물리적으로 well-known/assetlinks.json,app로 변경됩니다.yaml 설정이 방문 목적지를 변경했습니다.)
    액세스https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://my-android-server.appspot.com&relation=delegate_permission/common.handle_all_urls
    "debugString": "********************* ERRORS *********************\nNone!...
    
    반납을 확인했습니다.
    이렇게 다시
    adb shell am start -W -a android.intent.action.VIEW -d "http://my-android-server.appspot.com/html/list.html?page_no=1\&open=2"
    
    의 경우 지금까지 대화상자에서 앱 선택이 나왔지만 이번에는 아무것도 묻지 않고 대상의 앱 화면을 보여준다.

    동작 확인


    이 같은 대응을 해 플레이스토어에 앱을 공개했다.
    https://twitter.com/noboru_i/status/1028173855754346496
    트위터 앱에서 해당 트위터를 열고 URL을 클릭한 뒤 대화 상자가 나타나지 않고 무대 2 화면이 표시됐다.

    좋은 웹페이지 즐겨찾기