Please enable JavaScript.
Coggle requires JavaScript to display documents.
Deep Link Testing & Automation, Overall Deeplink Summary, AppsFlyer…
-
-
-
OneLink - SMS, Email, PushNotifications , cross platfrom(android &iOS)
FLOW
Onelink click → Playstore → Install
App launch → Apps Flyer Sdk → AppsFlyer server → get Attribution & Deeplink data → callback to App
-
FLOW
Facebook App → Facebook Ad Click →Play Store → Install → App launch → Appsflyer Sdk → FB server → Get Attribution and Deeplink Data → callback to App
Facebook AD Deeplink (NOT Onelink) along with attribution data and app deeplink(pocketfm://episode/789)
-
-
Current Testing ProcessWithout App Install(Automated)
- Appsflyer OneLink used for testing
(https://click.pocketfm.in/whkH/76mqpvtc)
- On opening onelink , routes to playstore
- Click on install, side load PocketFM apk , click on open
- App is launched, do app validation with diff login methods
With App Install(Automated)
- On opening onelink , app is launched
- App is valiadted for auto-login & guest user cases
Current Testing ProcessWithout App Install(Manual)
- FB AD preview link used for testing
(https://fb.me/adspreview/facebook/1M2MFNY7QdMPspP)
- An FB Ad preview link expires and must be generated again for each release testing
- On opening FB AD Preview link , takes to FB app, look for AD, click on it , routes to playstore
- Click on install, side load PocketFM apk , click on open
- App is launched, do app validation with diff login methods
With App Install(Manual)
- On opening FB Ad preview link , takes to FB app, look for AD, click on it , app is launched
- App is valiadted for auto-login & guest user cases
Proposed solution Steps Without App Install(Manual simulation)
- Get device Advertising ID: adb shell settings get secure advertising_id or get ad_id from charles
- Send test deeplink to Google server: curl "https://www.googleadservices.com/pagead/conversion/app/deeplink? &rdid=<DEVICE_ADID>&id_type=adid&bundleid=com.radio.pocketfm &deeplink=pocketfm://open?entity_type=show&entity_id=39769725765bb590e36aa104c462322e3b70fe2e&direct_play=true"
- Enable debug mode: adb shell setprop debug.deferred.deeplink com.pocketfm.app
- Install PocketFM APK via sideload
- Launch app - AppsFlyer SDK will fetch test deeplink from Google
- App validation with different login methods
With App Install(Manual)
- Simulation: Not applicable (simulation only works for fresh installs)
- Alternative: Use direct deeplink testing adb shell am start -d "pocketfm://episode/789" com.pocketfm.app
FLOW
Google AD click → Play Store (with Install Referrer containing GCLID) →
Install → App launch → AppsFlyer SDK →
Reads Install Referrer via Google Play API →
Parses GCLID & deeplink → callback to App
Why Real UAC Testing is Not Possible
- Install Referrer ONLY works with actual Play Store installations
- Cannot test with sideloaded APKs (adb install)
- Testing app cannot be published to Play Store without verification
*Proposed solution explainationGoogle provides a test endpoint to simulate UAC deep linking without Play Store1) Retrieves unique device AD ID using "adb shell settings get secure advertising_id"
- Google uses this to identify which device should receive test deeplink
2) Register Test Deep link using curl "https://www.googleadservices.com/pagead/conversion/app/deeplink?&rdid<DEVICE_ADID>&id_type=adid&bundleid=com.pocketfm.app&deeplink=pocketfm://episode/789&ddl_test=1"What this does -
- Tells Google server: Store this test deeplink for this device
- Deeplink stored for 24 hours on Google servers
3) Enable Debug Mode using - adb shell setprop debug.deferred.deeplink com.pocketfm.appPurpose -
- Enables Google Play Services to accept test deeplinks
- Without this, Play Services only accepts real campaign deeplinks
4)How AppsFlyer SDK Works
- When app launches, AppsFlyer SDK tries multiple methods
- First attempt - Install Referrer API, Checks if app was installed from Play Store
- In simulation, this returns NULL (sideloaded app)
- Second attempt - Google Analytics for Firebase (GA4F)
- AppsFlyer internally uses GA4F for deferred deeplinks
- Google returns the test deeplink we registered via curl
- AppsFlyer Parses attribution data
& reads deeplinkand return to app
-