Added crashlytics (Tested).
Solved bug related to empty OneSignal user ID when the app is initially launched. Tested and shared build for wokeland.com server.
This commit is contained in:
@@ -6,6 +6,7 @@ plugins {
|
|||||||
alias(libs.plugins.ksp)
|
alias(libs.plugins.ksp)
|
||||||
id 'com.google.gms.google-services'
|
id 'com.google.gms.google-services'
|
||||||
id 'com.google.firebase.firebase-perf'
|
id 'com.google.firebase.firebase-perf'
|
||||||
|
id 'com.google.firebase.crashlytics'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -119,6 +120,7 @@ dependencies {
|
|||||||
|
|
||||||
// one-signal
|
// one-signal
|
||||||
implementation(libs.onesignal)
|
implementation(libs.onesignal)
|
||||||
|
implementation libs.firebase.crashlytics
|
||||||
|
|
||||||
// room-database
|
// room-database
|
||||||
def room_version = "2.6.1"
|
def room_version = "2.6.1"
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ import android.transition.TransitionInflater
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.app.ActivityOptionsCompat
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.google.firebase.analytics.ktx.analytics
|
import com.google.firebase.analytics.ktx.analytics
|
||||||
import com.google.firebase.ktx.Firebase
|
import com.google.firebase.ktx.Firebase
|
||||||
|
import com.onesignal.OneSignal
|
||||||
|
import com.onesignal.user.state.IUserStateObserver
|
||||||
|
import com.onesignal.user.state.UserChangedState
|
||||||
import com.woka.R
|
import com.woka.R
|
||||||
import com.woka.WokaApp.Companion.userPrefs
|
import com.woka.WokaApp.Companion.userPrefs
|
||||||
import com.woka.database.helpers.ClicksHelper
|
import com.woka.database.helpers.ClicksHelper
|
||||||
@@ -20,7 +22,6 @@ import com.woka.home.views.HomeActivity
|
|||||||
import com.woka.networking.ApiResult
|
import com.woka.networking.ApiResult
|
||||||
import com.woka.onboard.models.Guest
|
import com.woka.onboard.models.Guest
|
||||||
import com.woka.onboard.mvvm.OnboardRepository
|
import com.woka.onboard.mvvm.OnboardRepository
|
||||||
import com.woka.onboard.views.OnboardActivity
|
|
||||||
import com.woka.userPreference.UserType
|
import com.woka.userPreference.UserType
|
||||||
import com.woka.utils.ANALYTICS_GUEST_LOGIN
|
import com.woka.utils.ANALYTICS_GUEST_LOGIN
|
||||||
import com.woka.utils.ANALYTICS_NEW_USER
|
import com.woka.utils.ANALYTICS_NEW_USER
|
||||||
@@ -62,21 +63,18 @@ class LanguageFragment : Fragment() {
|
|||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
|
ClicksHelper.upsertClickEvent(ContentType.OTHERS)
|
||||||
progressView.show()
|
progressView.show()
|
||||||
when (val response = onboardRepository.guestLogin()){
|
if (OneSignal.User.onesignalId.isEmpty()){
|
||||||
is ApiResult.Error -> {
|
OneSignal.User.addObserver(object : IUserStateObserver{
|
||||||
progressView.hide()
|
override fun onUserStateChange(state: UserChangedState) {
|
||||||
toast(response.errorMessage)
|
lifecycleScope.launch {
|
||||||
}
|
guestLogin()
|
||||||
is ApiResult.Loading -> {}
|
}
|
||||||
is ApiResult.Success -> {
|
|
||||||
progressView.hide()
|
|
||||||
toast(response.message)
|
|
||||||
requireActivity().changeLocale(LOCALE_ENGLISH)
|
|
||||||
|
|
||||||
response.data?.let {
|
OneSignal.User.removeObserver(this)
|
||||||
completeGuestLogin(response.data)
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
}else{
|
||||||
|
guestLogin()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,6 +103,25 @@ class LanguageFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun guestLogin(){
|
||||||
|
when (val response = onboardRepository.guestLogin()){
|
||||||
|
is ApiResult.Error -> {
|
||||||
|
progressView.hide()
|
||||||
|
toast(response.errorMessage)
|
||||||
|
}
|
||||||
|
is ApiResult.Loading -> {}
|
||||||
|
is ApiResult.Success -> {
|
||||||
|
progressView.hide()
|
||||||
|
toast(response.message)
|
||||||
|
requireActivity().changeLocale(LOCALE_ENGLISH)
|
||||||
|
|
||||||
|
response.data?.let {
|
||||||
|
completeGuestLogin(response.data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun completeGuestLogin(data: Guest) {
|
private fun completeGuestLogin(data: Guest) {
|
||||||
userPrefs?.userType = UserType.GUEST
|
userPrefs?.userType = UserType.GUEST
|
||||||
userPrefs?.guestUserName = data.fullname
|
userPrefs?.guestUserName = data.fullname
|
||||||
@@ -123,9 +140,9 @@ class LanguageFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun gotoOnboardActivity() {
|
// private fun gotoOnboardActivity() {
|
||||||
startActivity(Intent(requireActivity(), OnboardActivity::class.java),
|
// startActivity(Intent(requireActivity(), OnboardActivity::class.java),
|
||||||
ActivityOptionsCompat.makeSceneTransitionAnimation(requireActivity(),
|
// ActivityOptionsCompat.makeSceneTransitionAnimation(requireActivity(),
|
||||||
binding.logo, "logo").toBundle())
|
// binding.logo, "logo").toBundle())
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
@@ -13,14 +13,10 @@ import androidx.lifecycle.Observer
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.FragmentNavigatorExtras
|
import androidx.navigation.fragment.FragmentNavigatorExtras
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.android.gms.ads.AdRequest
|
|
||||||
import com.google.android.gms.ads.AdSize
|
|
||||||
import com.google.android.gms.ads.AdView
|
|
||||||
import com.woka.BuildConfig
|
import com.woka.BuildConfig
|
||||||
import com.woka.R
|
import com.woka.R
|
||||||
import com.woka.WokaApp.Companion.userPrefs
|
import com.woka.WokaApp.Companion.userPrefs
|
||||||
import com.woka.databinding.FragmentSplashBinding
|
import com.woka.databinding.FragmentSplashBinding
|
||||||
import com.woka.googleads.SPLASH
|
|
||||||
import com.woka.home.views.HomeActivity
|
import com.woka.home.views.HomeActivity
|
||||||
import com.woka.networking.ApiResult
|
import com.woka.networking.ApiResult
|
||||||
import com.woka.onboard.models.appupdate.VersionHistoryResponseData
|
import com.woka.onboard.models.appupdate.VersionHistoryResponseData
|
||||||
@@ -82,36 +78,6 @@ class SplashFragment : Fragment(), Observer<ApiResult<UserDataResponse>?> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
clickEvents()
|
clickEvents()
|
||||||
|
|
||||||
// loadGoogleAds()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun loadGoogleAds() {
|
|
||||||
// ad container 1
|
|
||||||
val adView1 = AdView(requireContext())
|
|
||||||
adView1.adUnitId = SPLASH
|
|
||||||
adView1.setAdSize(AdSize(AdSize.FULL_WIDTH, 100))
|
|
||||||
|
|
||||||
binding.adsContainer1.removeAllViews()
|
|
||||||
binding.adsContainer1.addView(adView1)
|
|
||||||
|
|
||||||
adView1.loadAd(
|
|
||||||
AdRequest.Builder()
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
|
|
||||||
// ad container 2
|
|
||||||
val adView2 = AdView(requireContext())
|
|
||||||
adView2.adUnitId = SPLASH
|
|
||||||
adView2.setAdSize(AdSize(AdSize.FULL_WIDTH, 100))
|
|
||||||
|
|
||||||
binding.adsContainer2.removeAllViews()
|
|
||||||
binding.adsContainer2.addView(adView2)
|
|
||||||
|
|
||||||
adView2.loadAd(
|
|
||||||
AdRequest.Builder()
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clickEvents() {
|
private fun clickEvents() {
|
||||||
@@ -181,7 +147,7 @@ class SplashFragment : Fragment(), Observer<ApiResult<UserDataResponse>?> {
|
|||||||
userPrefs?.skippedVersion?.let {skippedVersion ->
|
userPrefs?.skippedVersion?.let {skippedVersion ->
|
||||||
if (newVersion > skippedVersion){
|
if (newVersion > skippedVersion){
|
||||||
it.data.`0`.force_update_version?.let { forceVersion ->
|
it.data.`0`.force_update_version?.let { forceVersion ->
|
||||||
findNavController().navigate(SplashFragmentDirections.actionSplashFragmentToNewUpdateFragment(newVersion, 1))
|
findNavController().navigate(SplashFragmentDirections.actionSplashFragmentToNewUpdateFragment(newVersion, forceVersion))
|
||||||
return@observe
|
return@observe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,4 +31,4 @@ const val ONESIGNAL_APP_ID = "f9674e6f-75fb-49e8-8379-4f2ed2a880b8"
|
|||||||
const val ANALYTICS_GUEST_LOGIN = "guest_login_android"
|
const val ANALYTICS_GUEST_LOGIN = "guest_login_android"
|
||||||
const val ANALYTICS_USER_SIGN_UP = "user_signup_android"
|
const val ANALYTICS_USER_SIGN_UP = "user_signup_android"
|
||||||
const val ANALYTICS_NEW_USER = "new_user_android"
|
const val ANALYTICS_NEW_USER = "new_user_android"
|
||||||
const val ANALYTICS_UNIQUE_USER = "engaged_users"
|
const val ANALYTICS_UNIQUE_USER = "engaged_users_android"
|
||||||
@@ -3,6 +3,7 @@ buildscript {
|
|||||||
classpath libs.google.services
|
classpath libs.google.services
|
||||||
classpath libs.gradle
|
classpath libs.gradle
|
||||||
classpath libs.perf.plugin
|
classpath libs.perf.plugin
|
||||||
|
classpath libs.firebase.crashlytics.gradle
|
||||||
}
|
}
|
||||||
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ android.enableJetifier=true
|
|||||||
|
|
||||||
# BASE URLS
|
# BASE URLS
|
||||||
|
|
||||||
# staging
|
# production
|
||||||
WOKA_BASE_URL="https://wokaland.com/secret-panel-10102023/hidden-admin-portal-20092023/api/"
|
WOKA_BASE_URL="https://wokaland.com/secret-panel-10102023/hidden-admin-portal-20092023/api/"
|
||||||
|
|
||||||
|
# staging
|
||||||
|
#WOKA_BASE_URL="https://wokastaging.in/api/"
|
||||||
|
|
||||||
# testing
|
# testing
|
||||||
#WOKA_BASE_URL="https://wokanative.betadelivery.com/api/"
|
#WOKA_BASE_URL="https://wokanative.betadelivery.com/api/"
|
||||||
|
|
||||||
# production
|
|
||||||
#WOKA_BASE_URL="https://wokaland.com/api/"
|
|
||||||
|
|
||||||
WOKA_USER_NAME="admin"
|
WOKA_USER_NAME="admin"
|
||||||
WOKA_PASSWORD="Woka@1234"
|
WOKA_PASSWORD="Woka@1234"
|
||||||
@@ -40,6 +40,8 @@ sdpAndroid = "1.1.1"
|
|||||||
shimmer = "0.5.0"
|
shimmer = "0.5.0"
|
||||||
sspAndroid = "1.1.1"
|
sspAndroid = "1.1.1"
|
||||||
workRuntimeKtx = "2.9.1"
|
workRuntimeKtx = "2.9.1"
|
||||||
|
firebaseCrashlytics = "19.2.0"
|
||||||
|
firebaseCrashlyticsGradle = "3.0.2"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
android_audio_mixer = { module = "com.github.ZeroOneZeroR:android_audio_mixer", version.ref = "android_audio_mixer" }
|
android_audio_mixer = { module = "com.github.ZeroOneZeroR:android_audio_mixer", version.ref = "android_audio_mixer" }
|
||||||
@@ -93,6 +95,8 @@ perf-plugin = { group = "com.google.firebase", name = "perf-plugin", version.ref
|
|||||||
sdp-android = { module = "com.intuit.sdp:sdp-android", version.ref = "sdpAndroid" }
|
sdp-android = { module = "com.intuit.sdp:sdp-android", version.ref = "sdpAndroid" }
|
||||||
shimmer = { module = "com.facebook.shimmer:shimmer", version.ref = "shimmer" }
|
shimmer = { module = "com.facebook.shimmer:shimmer", version.ref = "shimmer" }
|
||||||
ssp-android = { module = "com.intuit.ssp:ssp-android", version.ref = "sspAndroid" }
|
ssp-android = { module = "com.intuit.ssp:ssp-android", version.ref = "sspAndroid" }
|
||||||
|
firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics", version.ref = "firebaseCrashlytics" }
|
||||||
|
firebase-crashlytics-gradle = { group = "com.google.firebase", name = "firebase-crashlytics-gradle", version.ref = "firebaseCrashlyticsGradle" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||||
|
|||||||
Reference in New Issue
Block a user