AppLinks

About

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ сСкрСты Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ - ΠΏΠ»ΠΎΡ…ΠΎ. Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΡ… с бэкСнд-сСрвСра. Π‘ΠΎΠ»Π΅Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, использованиС ссылок Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ смоТСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ любой Redirect URI (Π² OAuth) ΠΈΠ»ΠΈ любой URL, Π² Ρ†Π΅Π»ΠΎΠΌ. Π­Ρ‚ΠΎ называСтся созданиСм Universal Link with Site Association

Papers

ΠΎΠ±Ρ…ΠΎΠ΄ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°? https://medium.com/swlh/android-hacked-any-link-could-be-linked-to-your-app-by-default-4b49e3692949

Android

AppLinks - это бСзопасный способ (бСзопасная вСрсия DeepLinks) ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сСкрСт для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· сторонний сСрвис.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ: https://habr.com/ru/company/jugru/blog/352914/

Для Android, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DeepLinks ΠΊΠ°ΠΊ AppLinks, Π½Π°Π΄ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²ΠΎ всС Web URL intent filters Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ android:autoVerify="true".

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

</activity>

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ вас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ настраиваСмой схСмы Π² вашСм intent filter, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ http ΠΈΠ»ΠΈ https! И послСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅: Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» json с ΠΈΠΌΠ΅Π½Π΅ΠΌ assetlinks.json. На сторонС web-сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² intent filter. НапримСр: https://example.com/.well-known/assetlinks.json

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

[{
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
   	 "namespace": "android_app",
   	 "package_name": "com.example.puppies.app",
   	 "sha256_cert_fingerprints": ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
    }
},
  {
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.monkeys.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }]

package_name Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с app_id вашСго прилоТСния, Π° sha256_ccert_fingerprints Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· сСртификатов подписи вашСго прилоТСния.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΠΎ AppLink, Android сходит Π½Π° ваш сСрвСр, Π·Π°Π±Π΅Ρ€Π΅Ρ‚ assetlinks.json Ρ„Π°ΠΉΠ» ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ app_id ΠΈ подпись ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ AppLinks Π² Android: https://developer.android.com/training/app-links/verify-site-associations#request-verify

iOS

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ссылки для iOS: https://some.app.link/.well-known/apple-app-site-association

Как это Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° iOS: https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html

Last updated

Was this helpful?