Xamarin에서 App Links for Android

소개



지금, 받고 있는 일로 처음으로 Xamarin 만지고 있으므로 잊지 않게 메모!
간단한 내용일지도 모르지만, Xamarin에서 App Links 구현의 공식 문서가 영어였던 것과 실제 디렉토리 등이 다르기도 했습니다.

하고 싶은 일


  • SMS에 표시된 https://로 시작하는 링크를 두드리면 자체 앱이 시작됩니다.
  • 링크에 파라미터를 붙여 자신의 앱에 건네준다 (건네준 후의 처리는 또 따로 만든다)

    환경


  • MacBookPro late2016
  • MacOS Hight Sierra var10.13.3
  • Nexsus5 Android ver6.0.1
  • Visual Studio for Mac Community ver7.3.3

  • 절차


  • intent filters 추가
  • 수신 된 의도에서 데이터를 읽습니다
  • Digital Asset Links JSON 파일 만들기
  • JSON 파일 배치
  • 동작 확인

  • 참고로 한 사이트


  • Xamarin 공식 사이트 App-Linking in Android 6.0
  • Xamarin 공식 사이트 키 스토어에서 MD5 또는 SHA1 서명 검색
  • 【Xamain .Android】 【C#】 외부 앱에서, 자신의 앱의 커스텀 URL Scheme 로 기동시켜 인수를 받는다

  • 구현



    intent filters 추가



    Android 공식 사이트에서는 AndroidManifest.xml에 기술이라고 써 있습니다만, Xamarin에서는 MainActivity.cs에 기술한다.
        [Activity (
                                    //省略
                      )]
    
        //インテントフィルター追加
        [IntentFilter(new[] { Android.Content.Intent.ActionView },
                           AutoVerify = true,
                           Categories = new[]
                           {
                                Android.Content.Intent.CategoryDefault,
                                Android.Content.Intent.CategoryBrowsable
                           },
                           DataScheme = "http",
                           DataHost = "exsample.jp",
                           DataPathPrefix = "/myApp/")]
    

    자동 인증을 수행하는 경우 인텐트 필터를 autoVerify=”true” 설정합니다.

    수신된 의도에서 데이터 로드



    MainActivity 클래스에 수신한 데이터를 읽어들이는 기술을 추가한다.
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
        { //省略
                //URI情報を取得
                var action = Intent?.Action;
                var data = Intent?.Data;
    //省略
    }
    

    Digital Asset Links JSON 파일 작성



    앱이 인텐트 필터에 사용되는 URL 도메인에 속하는지 확인해야 하므로 SHA256 지문이 필요합니다.
    이번에는 디버깅을위한 키 스토어 지문을 사용합니다.
    공식 사이트의 키 스토어 MD5 또는 SHA1 서명 찾기 의 페이지에는
    ~/.local/share/Xamarin/Mono for Android/debug.keystore
    
    

    여기에 있다고 쓰고 있습니다만 내 환경에는 Xamarin 의 디렉토리내에 Mono for Android 의 디렉토리가 보이지 않았습니다.
    잠시 찾았지만 포기하고 터미널에서 find하면 속공 발견! (내 1시간을 돌려주고...)
    $ find ./ -name debug.keystore
    

    다음의 3건의 결과로부터 해당하는 키스토어의 장소를 알았습니다.
    .//project/Droid/debug.keystore
    .//android_project/project/debug.keystore
    .//.android/debug.keystore
    

    그리고 공식 사이트에 실려있는 다음 명령을 사용하여 지문을 확인하십시오.
    keytool -list -v -keystore "キーストアーの場所"/debug.keystore -alias androiddebugkey -storepass android -keypass android
    

    실행하면 아래와 같이 확인할 수 있습니다.
    別名: androiddebugkey
    作成日: 2016/10/01
    エントリ・タイプ: PrivateKeyEntry
    証明書チェーンの長さ: 1
    証明書[1]:
    所有者: CN=Android Debug, O=Android, C=US
    発行者: CN=Android Debug, O=Android, C=US
    シリアル番号: 56d27636
    有効期間の開始日: Mon Oct 1 10:00:00 JST 2016終了日: Fri Mar 1 10:00:00 JST 2044
    証明書のフィンガプリント:
         MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
         SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
         SHA256: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
         署名アルゴリズム名: SHA256withRSA
         バージョン: 3
    
    拡張: 
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    

    확인이 끝나면 SHA256 서명을 사용하여 Digital Asset Links JSON 파일을 만듭니다.
    Digital Asset Links JSON 파일을 만들려면 아래 페이지에서 만들 수 있습니다.
    참고로 다음 페이지에서 Digital Assets 파일이 올바르게 포맷되고 호스팅되는지 확인할 수도 있습니다.



    Google Digital Asset Links

    완성 된 것이 여기
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "jp.co.exsample.myapp",
                   "sha256_cert_fingerprints": ["XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"] }
    }]
    

    JSON 파일 배치



    만든 JSON 파일을 assetlinks.json라는 이름으로 저장하고 웹 사이트에 .well-known라는 디렉토리를 만들고 업로드합니다.



    업로드할 수 있는지 URL을 두드려 확인.
    https://exsample/.well-known/assetlinks.json

    동작 확인



    외부 앱에서 http://exsample.jp/myApp/ 자신의 앱이 시작되면 성공입니다!

    좋은 웹페이지 즐겨찾기