1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.referrer 3 4 import android.content.Context 5 import android.content.Intent 6 import com.google.android.gms.analytics.CampaignTrackingReceiver 7 import host.exp.exponent.ExpoApplication 8 import host.exp.exponent.analytics.Analytics 9 import host.exp.exponent.analytics.EXL 10 import host.exp.exponent.di.NativeModuleDepsProvider 11 import host.exp.exponent.storage.ExponentSharedPreferences 12 import org.json.JSONException 13 import org.json.JSONObject 14 import javax.inject.Inject 15 16 class InstallReferrerReceiver : CampaignTrackingReceiver() { 17 @Inject 18 lateinit var exponentSharedPreferences: ExponentSharedPreferences 19 20 override fun onReceive(context: Context, intent: Intent) { 21 super.onReceive(context, intent) 22 if (context.applicationContext !is ExpoApplication) { 23 EXL.e( 24 TAG, 25 "InstallReferrerReceiver.context.getApplicationContext() not an instance of ExpoApplication" 26 ) 27 return 28 } 29 NativeModuleDepsProvider.instance.inject(InstallReferrerReceiver::class.java, this) 30 31 val referrer = intent.getStringExtra("referrer") 32 EXL.d(TAG, "Referrer: $referrer") 33 if (referrer != null) { 34 exponentSharedPreferences.setString(ExponentSharedPreferences.ExponentSharedPreferencesKey.REFERRER_KEY, referrer) 35 } 36 37 // Analytics 38 val eventProperties = JSONObject().apply { 39 try { 40 put("REFERRER", referrer ?: "") 41 } catch (e: JSONException) { 42 EXL.e(TAG, e.message!!) 43 } 44 } 45 Analytics.logEvent(Analytics.AnalyticsEvent.INSTALL_REFERRER_RECEIVED, eventProperties) 46 } 47 48 companion object { 49 private val TAG = InstallReferrerReceiver::class.java.simpleName 50 } 51 } 52