Fixed Install Event + Heartbeat for tracking uninstall.

This commit is contained in:
rahul bhat
2021-12-23 12:19:45 +05:30
parent d5432e20c3
commit 2a7dc36bef
10 changed files with 47 additions and 46 deletions

View File

@@ -28,7 +28,7 @@ open class TestBase {
fun setup() {
// closeSoftKeyboard()
clearData()
PreferenceManager.clearPrefData()
PreferenceManager.clearPrefDataSession()
}
// val phoneNumber = Utilities.getRandomMockedPhoneNumber()

View File

@@ -24,7 +24,7 @@ open class LoanEligibilityMockTestBase {
webServer = MockWebServer()
webServer.start(MockWebServerUtils.port)
webServer.dispatcher = LoanEligibilityDispatcher()
PreferenceManager.clearPrefData()
PreferenceManager.clearPrefDataSession()
}
fun <T : Dispatcher> currentDispatcher(): T = webServer.dispatcher as T

View File

@@ -62,10 +62,10 @@ class SplashActivity : BaseActivity() {
intent,
SingularData(BuildConfig.SINGULAR_APP_KEY, BuildConfig.SINGULAR_SECRET)
)
val appInstalled = PreferenceManager.getBooleanPreference(APP_INSTALLED)
val appInstalled = PreferenceManager.getBooleanPreferenceApp(APP_INSTALLED)
if (!appInstalled.orFalse()) {
analyticsTracker.trackAppInstall(applicationContext)
PreferenceManager.setBooleanPreference(APP_INSTALLED, true)
PreferenceManager.setBooleanPreferenceApp(APP_INSTALLED, true)
}
initErrors()
init()

View File

@@ -116,7 +116,7 @@ fun isNetworkAvailable(): Boolean {
}
fun clearData() {
PreferenceManager.clearPrefData()
PreferenceManager.clearPrefDataSession()
NaviPreferenceManager.clearDataOnLogout()
}

View File

@@ -15,11 +15,21 @@ import com.navi.common.sharedpref.CommonPrefConstants.IS_LOAN_JOURNEY_DATA_DELET
object PreferenceManager {
private const val PREFS_FILENAME = "com.naviapp.preferences"
private lateinit var sharedPreferences: SharedPreferences
private const val PREFS_FILENAME_SESSION = "com.naviapp.preferences"
private const val PREFS_FILENAME = "com.naviapp.preferences.app"
// Cleared on logout/endOfSession
private lateinit var sharedPreferencesForSession: SharedPreferences
// Not cleared on logout/endOfSession
private lateinit var sharedPreferencesForApp: SharedPreferences
private lateinit var gson: Gson
fun init(application: Application) {
sharedPreferences = application.getSharedPreferences(
sharedPreferencesForSession = application.getSharedPreferences(
PREFS_FILENAME_SESSION,
Context.MODE_PRIVATE
)
sharedPreferencesForApp = application.getSharedPreferences(
PREFS_FILENAME,
Context.MODE_PRIVATE
)
@@ -27,38 +37,38 @@ object PreferenceManager {
}
fun getStringPreference(key: String): String? {
return sharedPreferences.getString(key, "")
return sharedPreferencesForSession.getString(key, "")
}
fun setStringPreference(key: String, value: String) {
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
editor.putString(key, value)
editor.apply()
}
fun getIntPreference(key: String): Int {
return sharedPreferences.getInt(key, 0)
return sharedPreferencesForSession.getInt(key, 0)
}
fun getLongPreference(key: String): Long? {
return sharedPreferences.getLong(key, -1L)
return sharedPreferencesForSession.getLong(key, -1L)
}
fun setIntPreference(
key: String,
value: Int
) {
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
editor.putInt(key, value)
editor.apply()
}
fun getBooleanPreference(key: String, defValue: Boolean = false): Boolean {
return sharedPreferences.getBoolean(key, defValue)
return sharedPreferencesForSession.getBoolean(key, defValue)
}
fun setBooleanPreference(key: String, value: Boolean) {
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
editor.putBoolean(key, value)
editor.apply()
}
@@ -67,20 +77,20 @@ object PreferenceManager {
key: String,
value: Long
) {
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
editor.putLong(key, value)
editor.apply()
}
fun setObjectPreference(key: String, value: Any?) {
val edit = sharedPreferences.edit()
val edit = sharedPreferencesForSession.edit()
edit.putString(key, Gson().toJson(value))
edit.apply()
}
fun <T> getObjectPrefrences(key: String, model: Class<T>): T? {
return run {
val json = sharedPreferences.getString(key, "")
val json = sharedPreferencesForSession.getString(key, "")
if (key == CURRENT_USER && json.isNullOrBlank()) {
return null
}
@@ -92,11 +102,11 @@ object PreferenceManager {
}
}
fun clearPrefData() {
fun clearPrefDataSession() {
try {
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
editor.clear()
editor.commit()
editor.apply()
} catch (e: Exception) {
}
}
@@ -104,7 +114,7 @@ object PreferenceManager {
fun removePrefData(keys: Array<String>) {
try {
if (keys.isEmpty()) return
val editor = sharedPreferences.edit()
val editor = sharedPreferencesForSession.edit()
keys.forEach {
editor.remove(it)
}
@@ -114,4 +124,14 @@ object PreferenceManager {
setBooleanPreference(IS_LOAN_JOURNEY_DATA_DELETED, false)
}
}
fun getBooleanPreferenceApp(key: String, defValue: Boolean = false): Boolean {
return sharedPreferencesForApp.getBoolean(key, defValue)
}
fun setBooleanPreferenceApp(key: String, value: Boolean) {
val editor = sharedPreferencesForApp.edit()
editor.putBoolean(key, value)
editor.apply()
}
}

View File

@@ -94,7 +94,7 @@ class ErrorFragment : BaseFragment(),
binding.errorTitle.text = "Session expired!"
binding.errorDescription.text = "Please Sign-in and retry again"
binding.errorAction.text = "Sign In"
PreferenceManager.clearPrefData()
PreferenceManager.clearPrefDataSession()
NaviPreferenceManager.clearDataOnLogout()
actionCallback = {
/*NaviPreferenceManager.removePrefData(listOf(SESSION_TOKEN))

View File

@@ -199,28 +199,6 @@ class SplashActivity : BaseActivity() {
super.onActivityResult(requestCode, resultCode, data)
}
/*private fun postInstallData() {
val appInstalled = NaviPreferenceManager.getBooleanPreference(APP_INSTALLED)
val deviceDetailsCaptured = NaviPreferenceManager.getBooleanPreference(
DEVICE_DETAILS_CAPTURED_PRE_INSTALL
)
val deviceAppsCaptured = NaviPreferenceManager.getBooleanPreference(
DEVICE_INSTALLED_APPS_CAPTURED
)
*//*if (!appInstalled.orFalse()) {
NaviInsuranceAnalytics.trackAppInstall()
NaviPreferenceManager.setBooleanPreference(APP_INSTALLED, true)
}*//*
*//*if (!deviceDetailsCaptured.orFalse()) {
postDeviceDetailsToServer()
}*//*
}*/
private fun initPreferences() {
NaviPreferenceManager.setStringPreference(USER_LOCATION_COUNTRY_CODE, "IN") //TODO
}

View File

@@ -22,7 +22,6 @@ const val IS_LOCATION_DATA_POST = "IS_LOCATION_DATA_POST"
const val PAYMENT_DONE_RATE_APP = "PAYMENT_DONE_RATE_APP"
const val WHATSAPP_COMMUNICATION_ENABLED = "WHATSAPP_COMMUNICATION_ENABLED"
const val FTUE_POLICY_PURCHASED = "FTUE_POLICY_PURCHASED"
const val APP_INSTALLED = "APP_INSTALLED"
const val IS_FROM_FB = "IS_FROM_FB"
const val SHOW_FEEDBACK_POPUP_COUNT = "SHOW_FEEDBACK_POPUP_COUNT"
const val SHOW_FEEDBACK_POPUP = "SHOW_FEEDBACK_POPUP"

View File

@@ -15,6 +15,7 @@ object PulseHelper {
PulseRetrofitProvider.init(applicationContext)
PulseSDKConfig.init(context, sdkConfig)
PulseEventManager.startSyncEvents(context)
trackEvent("pulse_sdk_init")
}
fun setUserId(userId: String?) {

View File

@@ -12,10 +12,13 @@ class SyncEventsWorker(val context: Context, workerParameters: WorkerParameters)
CoroutineWorker(context, workerParameters) {
override suspend fun doWork(): Result {
PulseEventManager.trackEvent("heartbeat", null, context)
if (PulseEventManager.isSyncTimerRunning()) {
PulseLogger.log(PulseConstants.LOG_TAG, "Cancelling Worker as Timer is already running")
return Result.failure()
}
// This code doesn't work as Worker starts the Sync Timer and above check returns from worker.
PulseEventManager.trackEvent("worker_worked", null, context)
PulseLogger.log(PulseConstants.LOG_TAG, "In doWork() of SyncEventsWorker")
PulseLogger.log(PulseConstants.LOG_TAG, Thread.currentThread().name)
val eventsSent = PulseEventManager.sendEventsToServer(context, SYNC_EVENTS_WORKER)