Goal:

ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ apk, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ позволял ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π² странах с Π³Π΅ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ + Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π·Π΅Ρ€ΠΊΠ°Π».

UserFlow

Участники процСсса

Tracker API

Π‘Π΅ΠΊΠ΅Π½Π΄ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π½Π° CloudFlare workers. Π’Ρ€Π΅ΠΊΠ΅Ρ€ΠΎΠ² Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большоС количСство, Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½Π°Ρ… ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€ΠΎΡƒΡ‚Π°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° рСализация Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ worker скрипта.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ использования:

casino.com/my-internal-link?stag=xxx&utm=yyy => static-assets.com/casino.apk

track.sub-domain.com/?stag=xxx&utm=yyy => static-assets.com/casino.apk

Π’ΠΎΡ€ΠΊΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π΅, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΡƒΡ‚Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ входящСго запроса Π²ΠΎΡ€ΠΊΠ΅Ρ€ записываСт Π² KV ΠΈΠ»ΠΈ DO ip адрСс ΠΈ search params ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² ссылкС, послС Ρ‡Π΅Π³ΠΎ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΡ‚ Π½Π° Π°ΠΏΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΆΠ½ΠΎ: Π²ΠΎΡ€ΠΊΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ находится Π² Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΎΡ‚ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° разворачивания Internal API, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTP API для доступа ΠΊ Internal API. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΌΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π°ΠΏΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ CF Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π΅, Π½Π΅ΠΆΠ΅Π»ΠΈ основноС Π°ΠΏΠΈ мобильного прилоТСния.

Π’Π°ΠΆΠ½ΠΎ: Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ копию всСх запросов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ проходят Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΠ² Π² BQ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΡŽΠ·Π΅Ρ€Π°Π³Π΅Π½Ρ‚Ρƒ ΠΈ Ρ‚.ΠΏ.)

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ для workera ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ipv4 only Ρ€Π΅ΠΆΠΈΠΌ. Π’ этом случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ipv4 Π½Π° Π΄ΠΎΠΌΠ΅Π½Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. (ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ipv4 адрСса для дСтСктирования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ)

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹Π΅ настройки worker:

tracker-api=https://some-api-url.com/path
bq-settings=standart bq env

Static

Π­Ρ‚ΠΎ R2 Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ статичных ассСтов. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ APK. R2 ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ APK большС 10 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· pages ΠΈΠ»ΠΈ workers нСльзя. ΠŸΡ€ΠΈ этом R2 ΠΈΠΌΠ΅Π΅Ρ‚ бСсплатный ergress Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΌ просто Π΅Ρ‰Π΅ ΠΈ дСшСво Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚ большиС Ρ„Π°ΠΉΠ»Ρ‹. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ static ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ Π΄ΠΎΠΌΠ΅Π½Ρ‹.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² R2 ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ сборки Π² Π²ΠΈΠ΄Π΅ APK.

Internal API

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ Π°ΠΏΠΈ прилоТСния. Π­Ρ‚ΠΎ Π°ΠΏΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Mobile-Client: /product-manifest.json

Π­Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π°ΠΏΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° фактичСски просто статичный json. ΠœΡ‹ запускаСм Π΅Π³ΠΎ ΠΏΡ€ΠΈ стартС мобильного прилоТСния, для опрСдСния нСобходимости запуска Ρ„Π»ΠΎΡƒ обновлСния apk Π½Π° клиСнтском устройствС). Π’Π½ΡƒΡ‚Ρ€ΠΈ json Ρƒ нас Π»Π΅ΠΆΠΈΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

{
"version": 1.0.2,
"url": "https://static.com/casino.apk"
}

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠΌΡƒ манифСсту Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ cat-manifest.json, daddy-manifest.json

Mobile-Client: /api/open

АПИ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈ стартС прилоТСния. Payload:

{  
  "custom_data": {  // appsflyer data, json field
    "installConversionData": {  
      "install_time": "2023-12-22 13:05:47.167",  
      "af_status": "Organic",  
      "af_message": "organic install",  
      "is_first_launch": false  
    },  
    "appOpenAttribution": {},  
    "deepLinking": "DeepLinkResult:{\"status\":\"NOT_FOUND\",\"error\":null,\"deepLink\":null}"  
  },  
  "appsflyerId": "1703250345065-1975383134428243633",  
  "appId": "com.bigfishbonansa.app",  
  "deviceId": "MTcwMzI1MDM0NTIzOC1lbl9VUy0xMDgwLjAtMjIzNi4wLTIzMTU2Mw==", //custom device id, ubiq for each instalation  
  "network_connection_type": "wifi",  
  "battery_level": "100%",  
  "device": {  // Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± устройствС
    "device_dpr": 2.75,  
    "device_width": 1080,  
    "device_height": 2236,  
    "model": "Pixel 4",  
    "os_name": "android",  
    "version": "31",  
    "manufacture": "Google",  
    "device_uuid": "unknown"  
  },  
  "fcmid": "e_fAofeISYSkAaPtWODypM:APA91bHHqT9bVz09sZ3PgIehsJBAqATdc2UOBISGX_YSm8iHyOsdqxz6nQvbv4zHqqofX1dUa3FqPNwH6oB1TZdonGpcsiBh_lMRrcND0cwiSe7R5gkntKfT-LUah5RW4su2vJ2inO1L", // firebase messaging token  
  "platform": "android", //ios
  "adsUrl": "", // Ссли ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½Π½ΡƒΡŽ ссылку, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π΅ Ρ‚ΡƒΡ‚
  "appVersion": "0.0.6+81",  
  "currentLocale": "en_US",
  "retry": 1,
  "userId": "13232"
}

Π’Π°ΠΆΠ½Ρ‹Π΅ для нас поля:

  • appID: Π½Π° основании этого поля ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π±Ρ€Π΅Π½Π΄Ρƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ опрСдСляСм Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • deviceId: позволяСт Π½Π°ΠΌ Ρ‚Ρ€Π΅ΠΊΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ установки
  • adsUrl: Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ доступно Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°
  • retry: это ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ 0, Ссли ΡƒΡ€Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ Π°ΠΏΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. Но Ссли ссылку ΠΈΠ· adsUrl Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ 200, Ρ‚ΠΎ дСлаСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запрос с ΠΊΠΎΠ΄ΠΎΠΌ 1, 2 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π—Π° счСт этого поля ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΎΠ»Π±Π΅ΠΊ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² случаС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π·Π΅Ρ€ΠΊΠ°Π».
  • userId: это ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ссли Ρ€Π°Π½Π΅Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с android webview

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ json Π²ΠΈΠ΄Π°:

{
  action: 'redirect', 
  payload: 'https://casino.com/?stag=xxx', 
  force: true 
}

Π³Π΄Π΅:

  • action: это Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ дСйствиС, сСйчас Ρƒ нас это всСгда redirect
  • payload: это ΡƒΡ€Π» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ. Π’Π°ΠΆΠ½ΠΎ: Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ url params связанныС с ΠΈΠΏ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ‚ запрос, Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ ΡƒΡ€Π» ΠΈΠ· настроСк.
  • force: Ссли true, Ρ‚ΠΎ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ послСдний ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ payload. Если false - Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использован послСдний сохранСнный Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² adsUrl Ρ€Π°Π½Π΅Π΅. БСйчас ΠΌΡ‹ всСгда Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ true.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ всСх запросах Π΄ΠΎΠ»ΠΆΠ½Π° Ρ‚Ρ€Π΅ΠΊΠ°Ρ‚ΡŒΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² BQ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°:

{
com.catcasino.app: 
["https://catcasino.com","https://mirrorcat.com","https://superrare.fallback.com"],
casino.daddy.app: ["https://daddy.casino","https://daddy-mirror.com"],
/// ...
}

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΡ€Π» ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π² 0ю ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ, 1ю, 2ю ΠΈ Ρ‚.Π΄.

Backend-Client: /api/track

Апи ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅ΠΊΠΊΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΡ‚ΡƒΠΊΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, проходящих Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ. payload:

{
ip: "193.233.22.2",
host: "https://originhost.com",
params: "?stag=xxx&utm=yyy",
timestamp: 2323233,
prodcut: "kent"
}

ΠŸΡ€ΠΈ этом response ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто 200, ΠΈΠ»ΠΈ Π½Π΅ 200 со ссылкой Π½Π° apk Π² body:

{
apk: "https://static.casino.com/android.apk"
}

ЦСль этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρƒ. Окно Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ - 1 дСнь. Π£ нас Π½Π΅Ρ‚ Π½ΡƒΠΆΠ΄Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ дня ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠΊΠ°Ρ….

Π’Π°ΠΆΠ½ΠΎ: Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ KV - ΠΎΠΊΠ½ΠΎ Π΅Π³ΠΎ синхронизации ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ CF ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹.

KV eventually consistent

In other global network locations changes may take up to 60 seconds or more to be visible as their cached versions of the data time-out

Π£ нас ΡƒΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ с этим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° apay, ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ KV Π² сторону Durable Object. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. DO Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ consistant Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ этом Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° expire встроСнного, ΠΊΠ°ΠΊ Π² KV. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании DO Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ самим Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ expire.

Casino

Π­Ρ‚ΠΎ сайт нашСго ΠΊΠ°Π·ΠΈΠ½ΠΎ. Π‘ΠΎ стороны ΠΊΠ°Π·ΠΈΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ β€” для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

function passData(uid: string) {
typeof Android == "undefined" || Android.sendData !== "function") return;
Android.sendData(JSON.stringify({uid}))
}

Π’Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΊ Android.sendData Π½Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ½Π΄ΠΆΠ΅ΠΊΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° прилоТСния. Если SG согласны, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: Android.sendData(JSON.stringify({uid, email, tags})), Π² этом случаСм ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ customer.io ΠΈ fundist, Ρ‚.ΠΊ. Ρ‚Π΅Π³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΊ Π½Π°ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ ΠΌΠΎΠ±ΠΈΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ block ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

(all(http.request.headers["origin"][*] ne "https://catcasino.com"))

Для Π²Π΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ origin Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с hostname ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ для мобильного ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° - Π²ΠΏΠΎΠ»Π½Π΅ сСбС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

CustomerIO

Π­Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ user journey automation Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΡƒΡˆΠ΅ΠΉ Π½Π° устройства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ сСгмСнтации Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SDK. Customer IO Android SDK. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡƒΡˆΠ°ΠΌΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π²Π° условия.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

CustomerIO.instance.identify(userId: uid, traits: {
  "email": user.email,
});

Минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для нас ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ это userID (ΠΎΠ½ ΠΆΠ΅ fundist id). ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° FCMID

НСобходимо ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ FCMID (Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ) ΠΊ FirebaseMessagingService прСдоставляСмому со стороны customer.io docs

Android App

БобствСнно говоря, сама Π°Π½Π΄Ρ€ΠΎΠΈΠ΄ Π°ΠΏΠΏΠΊΠ°. Flutter ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ сдк ΠΈ вСбвью для открытия сайта ΠΊΠ°Π·ΠΈΠ½ΠΎ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв.

ОбновлСниС вСрсии

Если ΠΏΡ€ΠΈ стартС прилоТСния Π² манифСстС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° вСрсия Π½ΠΎΠ²Π΅Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии прилоТСния - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ экрана с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ (которая Π±ΡƒΠ΄Π΅Ρ‚ вСсти Π½Π° Π½ΠΎΠ²ΠΎΠ΅ Π°ΠΏΠΊ)

Ротация слуТСбных Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ встроСн список слуТСбных Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ env пСрСмСнная со списком Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ). ΠŸΡ€ΠΈ стартС прилоТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ манифСста Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ /ΠΈΠΌΡΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°-manifest.json ΠΈ ссылку для ΠΏΠΎΠΊΠ°Π·Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· Π°ΠΏΠΈ. Если ΠΏΡ€ΠΈ стартС прилоТСния Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π½ΠΈ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· слуТСбных Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ экран ΠΎ нСдоступности ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π”ΠΎΠΌΠ΅Π½Ρ‹ прСдлагаСтся ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Retry for target domain

Если ΡƒΡ€Π» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² payload Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ (статус ΠΊΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ ΠΎΡ‚ 200), Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ запрос Π½Π° /api/click с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ retry=1 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π² зависимости ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ.

свайп двиТСния

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… двиТСния свайпом

  • свайп свСрху Π²Π½ΠΈΠ· - Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅Ρ„Ρ€Π΅Ρˆ страницы
  • свайп справа Π½Π°Π»Π΅Π²ΠΎ (Π½Π°Π·Π°Π΄) - Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ дСйствиС back Π² history Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нас Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π» сайт (ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΏΠΎΠ΄ ΠΌΠΎΠ± устройства Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ· Π²Π΅Π±Π°), Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ WAF Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π·Π΅Ρ€ΠΊΠ°Π»Π°. Π£Π²Ρ‹ ΠΏΡ€ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ useragent ломаСтся Π³ΡƒΠ³Π» авторизация, поэтому ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΠ΄Ρ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ломаСтся CORS Π½Π° API ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ origin. Π’ Π½Π΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ основной Π΄ΠΎΠΌΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, хотя ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ фактичСски Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ нСльзя, поэтому ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… посСтитСлСй Π΄ΠΎΠΌΠ΅Π½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

список SDK

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько SDK:

  • appsflyer sdk - сдк для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ
  • firebase messaging sdk - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΡƒΡˆΠ΅ΠΉ
  • customer.io sdk - Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с кастомСром

flavors

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°Ρ‡ΠΊΡƒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

  • daddy
  • kent
  • gamma
  • cat
  • kometa
  • arkada
  • alov
  • mers ЀактичСски ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ для кастомСра ΠΈ фаСрбСйса, Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠΌ ΠΈ экраном ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈ отсутствии ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π²ΠΎ всСх прилоТСниях, просто подмСняя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сборки (env ΠΈ ассСты) Π² зависимости ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π° сборки.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ссылок Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния

Π£ нас письма Π½Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

  • casino.com - основной Π΄ΠΎΠΌΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CAT: catcasino.com)
  • casino-mirror.com - ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π΅Ρ€ΠΊΠ°Π» (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CAT: catcasino560.com)
  • app.com - ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ для прилоТСния (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CAT: cf9du.app)

ΠžΠ±Ρ‰ΠΈΠΉ Ρ„Π»ΠΎΡƒ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° выглядит Ρ‚Π°ΠΊ:

  1. я ΠΈΠ³Ρ€ΠΎΠΊ, ΡΡ‚Π°Π²Π»ΡŽ мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  2. Π²Π½ΡƒΡ‚Ρ€ΠΈ вСбвью app.com Π΄ΠΎΠΌΠ΅Π½ с сайтом ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для мобильного прилоТСния (Π΅Π³ΠΎ нСльзя ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅)
  3. я Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния Π½Π° casino.app Π΄ΠΎΠΌΠ΅Π½Π΅
  4. ΠΌΠ½Π΅ Π² ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ письмо, Π²ΠΈΠ΄Π° app.com/confirm?token=xxx
  5. я ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ письмо ΠΈΠ· ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈ Ρƒ мСня открываСтся ΠΌΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ app.com Π΄ΠΎΠΌΠ΅Π½, с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ссылкой ΠΈΠ· письма (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ app.com/confirn?token=xxx Π²Π½ΡƒΡ‚Ρ€ΠΈ вСбвью)

такая схСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли Π΄ΠΎΠΌΠ΅Π½ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ письмо совпадаСт с Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ, Ρ‡Ρ‚ΠΎ использовался Π² webview

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдставляСм кСйс, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½Π° этапС 4 ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ письмо с Π΄ΠΎΠΌΠ΅Π½Π° casino.com ΠΈΠ»ΠΈ casino-mirror.com, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊ-ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² спискС Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π°

Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ

  1. я ΠΈΠ³Ρ€ΠΎΠΊ, ΡΡ‚Π°Π²Π»ΡŽ мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  2. Π²Π½ΡƒΡ‚Ρ€ΠΈ вСбвью открываСтся app.com Π΄ΠΎΠΌΠ΅Π½ со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎΠΌ
  3. я Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния Π½Π° casino.app Π΄ΠΎΠΌΠ΅Π½Π΅
  4. ΠΌΠ½Π΅ Π² ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ письмо, Π²ΠΈΠ΄Π° casino.com/confirm?token=xxx
  5. я ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ письмо ΠΈΠ· ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΈ Ρƒ мСня открываСтся ΠΌΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ app.com Π΄ΠΎΠΌΠ΅Π½, с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ссылкой ΠΈΠ· письма (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ app.com/confirn?token=xxx Π²Π½ΡƒΡ‚Ρ€ΠΈ вСбвью)

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ссылок для Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² casino.com, casino-mirror.com, app.com. ΠŸΡ€ΠΈ этом я Ρ…ΠΎΡ‡ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эти ссылки ΠΊΠ°ΠΊ universal link, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ссылки, ΠΊΠ°ΠΊ-Ρ‚ΠΎ urlPath ΠΈ urlSearchParams Π±Ρ‹Π»ΠΈ транслированы Π²Π½ΡƒΡ‚Ρ€ΡŒ webview, Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ я Ρ…ΠΎΡ‡Ρƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ссылки Π½Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΎΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСго прилоТСния ΠΈ всСгда Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ app.com Π΄ΠΎΠΌΠ΅Π½Π΅ (ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π° Π΄ΠΎΠΌΠ΅Π½Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠΌΠΈΠΌΠΎ app.com). ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ΅Π½ этот сцСнарий β€” для apk ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ внСсСны ряд ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ со стороны хостинга, поэтому запуск Π΅Π³ΠΎ ΠΈΠ· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ Π½Π° Π½Π΅ΠΌ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ скрипты Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ. Если ΠΆΠ΅ я случайно ΠΎΡ‚ΠΊΡ€ΠΎΡŽ Π½Π΅ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ вСбвью - Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΈ я Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡƒΡˆ Ρ‚ΠΎΠΊΠ΅Π½Π°Ρ… ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ.