Skip to content

Commit 1b6bb47

Browse files
Add new field is_meta_ct field to v1/installs for Meta Install Referrer (#1174)
* Patch to include is click-through field * updated log and moved code * Update ChangeLog.md * Added more verbose logs * Update ChangeLog.md * Update ChangeLog.md
1 parent 53e1788 commit 1b6bb47

File tree

8 files changed

+36
-12
lines changed

8 files changed

+36
-12
lines changed

Branch-SDK/src/main/java/io/branch/coroutines/InstallReferrers.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private fun queryProvider(context: Context, provider: String): InstallReferrerRe
308308
return null
309309
}
310310

311-
BranchLogger.i("getMetaInstallReferrerDetails - Got Meta Install Referrer from provider $provider: $installReferrerString")
311+
BranchLogger.i("getMetaInstallReferrerDetails - Got Meta Install Referrer as ${if (isClickThrough) "click-through" else "view-through"} from provider $provider: $installReferrerString")
312312

313313
try {
314314
val json = JSONObject(utmContentValue)
@@ -345,6 +345,9 @@ suspend fun fetchLatestInstallReferrer(context: Context): InstallReferrerResult?
345345
val allReferrers: List<InstallReferrerResult?> = listOf(googleReferrer.await(), huaweiReferrer.await(), samsungReferrer.await(), xiaomiReferrer.await(), metaReferrer.await())
346346
val latestReferrer = getLatestValidReferrerStore(allReferrers)
347347

348+
BranchLogger.v("All Install Referrers: $allReferrers")
349+
BranchLogger.v("Latest Install Referrer: $latestReferrer")
350+
348351
latestReferrer
349352
}
350353
}
@@ -360,11 +363,7 @@ fun getLatestValidReferrerStore(allReferrers: List<InstallReferrerResult?>): Ins
360363
}
361364

362365
if (allReferrers.filterNotNull().any { it.appStore == Jsonkey.Meta_Install_Referrer.key }) {
363-
val latestReferrer = handleMetaInstallReferrer(allReferrers, result!!)
364-
if (latestReferrer?.appStore == Jsonkey.Meta_Install_Referrer.key) {
365-
latestReferrer?.appStore = Jsonkey.Google_Play_Store.key
366-
}
367-
return latestReferrer
366+
return handleMetaInstallReferrer(allReferrers, result!!)
368367
}
369368

370369
return result

Branch-SDK/src/main/java/io/branch/referral/AppStoreReferrer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@ public class AppStoreReferrer {
1515
/* Link identifier on installing app from play store. */
1616
private static String installID_ = PrefHelper.NO_STRING_VALUE;
1717

18-
public static void processReferrerInfo(Context context, String rawReferrerString, long referrerClickTS, long installClickTS, String store) {
18+
public static void processReferrerInfo(Context context, String rawReferrerString, long referrerClickTS, long installClickTS, String store, Boolean isClickThrough) {
1919
PrefHelper prefHelper = PrefHelper.getInstance(context);
2020
if(!TextUtils.isEmpty(store)){
2121
prefHelper.setAppStoreSource(store);
22+
23+
//Set the click through flag for Meta Install Referrers
24+
if (store.equals(Defines.Jsonkey.Meta_Install_Referrer.getKey())) {
25+
prefHelper.setIsMetaClickThrough(isClickThrough);
26+
}
2227
}
2328
if (referrerClickTS > 0) {
2429
prefHelper.setLong(PrefHelper.KEY_REFERRER_CLICK_TS, referrerClickTS);

Branch-SDK/src/main/java/io/branch/referral/Defines.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ public enum Jsonkey {
222222

223223
DMA_EEA("dma_eea"),
224224
DMA_Ad_Personalization("dma_ad_personalization"),
225-
DMA_Ad_User_Data("dma_ad_user_data");
225+
DMA_Ad_User_Data("dma_ad_user_data"),
226+
Is_Meta_Click_Through("is_meta_ct");
226227

227228
private final String key;
228229

Branch-SDK/src/main/java/io/branch/referral/PrefHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ public class PrefHelper {
127127
static final String KEY_REFERRING_URL_QUERY_PARAMETERS = "bnc_referringUrlQueryParameters";
128128
static final String KEY_ANON_ID = "bnc_anon_id";
129129

130+
static final String KEY_IS_META_CLICKTHROUGH = "bnc_is_meta_clickthrough";
131+
130132
/**
131133
* Internal static variable of own type {@link PrefHelper}. This variable holds the single
132134
* instance used when the class is instantiated via the Singleton pattern.
@@ -709,6 +711,14 @@ public String getAppStoreSource(){
709711
return getString(KEY_APP_STORE_SOURCE);
710712
}
711713

714+
public void setIsMetaClickThrough(boolean isMetaClickThrough) {
715+
setBool(KEY_IS_META_CLICKTHROUGH, isMetaClickThrough);
716+
}
717+
718+
public boolean getIsMetaClickThrough() {
719+
return getBool(KEY_IS_META_CLICKTHROUGH);
720+
}
721+
712722
/**
713723
* Sets the referring URL query parameters.
714724
* @param referringUrlQueryParameters

Branch-SDK/src/main/java/io/branch/referral/ServerRequestInitSession.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,13 @@ void updateLinkReferrerParams() {
130130
String appStore = prefHelper_.getAppStoreSource();
131131
if(!PrefHelper.NO_STRING_VALUE.equals(appStore)) {
132132
try {
133-
getPost().put(Defines.Jsonkey.App_Store.getKey(), appStore);
133+
//Handle Meta Install Referrer by setting store as Google Play Store and adding is_meta_click_through
134+
if (appStore.equals(Defines.Jsonkey.Meta_Install_Referrer.getKey())) {
135+
getPost().put(Defines.Jsonkey.App_Store.getKey(), Defines.Jsonkey.Google_Play_Store.getKey());
136+
getPost().put(Defines.Jsonkey.Is_Meta_Click_Through.getKey(), prefHelper_.getIsMetaClickThrough());
137+
} else {
138+
getPost().put(Defines.Jsonkey.App_Store.getKey(), appStore);
139+
}
134140
} catch (JSONException e) {
135141
BranchLogger.w("Caught JSONException " + e.getMessage());
136142
}

Branch-SDK/src/main/java/io/branch/referral/SystemObserver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ public CoroutineContext getContext() {
602602
public void resumeWith(@NonNull Object o) {
603603
if (o != null) {
604604
InstallReferrerResult latestReferrer = (InstallReferrerResult) o;
605-
AppStoreReferrer.processReferrerInfo(context_, latestReferrer.getLatestRawReferrer(), latestReferrer.getLatestClickTimestamp(), latestReferrer.getLatestInstallTimestamp(), latestReferrer.getAppStore());
605+
AppStoreReferrer.processReferrerInfo(context_, latestReferrer.getLatestRawReferrer(), latestReferrer.getLatestClickTimestamp(), latestReferrer.getLatestInstallTimestamp(), latestReferrer.getAppStore(), latestReferrer.isClickThrough());
606606
}
607607
}
608608
});

ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Branch Android SDK change log
2+
- v5.10.1
3+
* _*Master Release*_ - Mar 13, 2024
4+
- Track Meta Install Referrer view-through installs
25
- v5.10.0
36
* _*Master Release*_ - Mar 8, 2024
47
- Introduced Meta Install Referrer tracking

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
VERSION_NAME=5.10.0
2-
VERSION_CODE=051200
1+
VERSION_NAME=5.10.1
2+
VERSION_CODE=051201
33
GROUP=io.branch.sdk.android
44

55
POM_DESCRIPTION=Use the Branch SDK (branch.io) to create and power the links that point back to your apps for all of these things and more. Branch makes it incredibly simple to create powerful deep links that can pass data across app install and open while handling all edge cases (using on desktop vs. mobile vs. already having the app installed, etc). Best of all, it is really simple to start using the links for your own app: only 2 lines of code to register the deep link router and one more line of code to create the links with custom data.

0 commit comments

Comments
 (0)