From c95542f9b2ea1c0b9100daecb60a74ac949d32b3 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Mon, 3 Jan 2022 19:32:38 -0600 Subject: Removed Google Analytics, bumped dependency versions, fixed base URL for modern version, enabled cookie persistence, and improved FCM token auto-registration. --- .gitignore | 1 + app/build.gradle | 6 +-- .../org/traccar/manager/GoogleMainApplication.kt | 4 -- app/src/main/AndroidManifest.xml | 2 +- .../main/java/org/traccar/manager/MainActivity.kt | 1 + .../main/java/org/traccar/manager/MainFragment.kt | 47 +++++++++++++++++----- app/src/main/res/xml/network_security_config.xml | 2 +- build.gradle | 6 +-- 8 files changed, 45 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index b84795a..afb1ddb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ build/ app/src/main/assets .DS_Store google-services.json +environment/ \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 12fbc96..0d01785 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,18 +33,14 @@ dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" googleImplementation platform('com.google.firebase:firebase-bom:29.0.3') - googleImplementation 'com.google.firebase:firebase-core' - googleImplementation 'com.google.firebase:firebase-analytics' - googleImplementation 'com.google.firebase:firebase-crashlytics' googleImplementation 'com.google.firebase:firebase-messaging' } if (getGradle().getStartParameter().getTaskRequests().toString().contains('Google')) { apply plugin: 'com.google.gms.google-services' - apply plugin: 'com.google.firebase.crashlytics' task copyJson(type: Copy) { - from '../../environment/google-services' + from '../environment/google-services' into '.' include 'traccar-manager-android.json' rename('traccar-manager-android.json', 'google-services.json') diff --git a/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt b/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt index 1c28987..2539897 100644 --- a/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt +++ b/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt @@ -24,16 +24,12 @@ import android.content.Intent import android.content.IntentFilter import android.os.Build import androidx.localbroadcastmanager.content.LocalBroadcastManager -import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.messaging.FirebaseMessaging class GoogleMainApplication : Application() { - private lateinit var firebaseAnalytics: FirebaseAnalytics - override fun onCreate() { super.onCreate() - firebaseAnalytics = FirebaseAnalytics.getInstance(this) val intentFilter = IntentFilter(MainFragment.EVENT_LOGIN) LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c3177f4..d4e0b51 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,10 +10,10 @@ = Build.VERSION_CODES.LOLLIPOP) { + CookieManager.getInstance().flush() + } + + val cookies = CookieManager.getInstance().getCookie(url) + if (cookies.contains("JSESSIONID") && !tokenSet) { + // Register token on server + if (PreferenceManager.getDefaultSharedPreferences(activity) + .contains(MainActivity.PREFERENCE_TOKEN) + ) { + val token = PreferenceManager.getDefaultSharedPreferences(activity) + .getString(MainActivity.PREFERENCE_TOKEN, "") + val code = "updateNotificationToken && updateNotificationToken('$token')" + Log.d("MainFragment", code) + Toast.makeText(activity, code, Toast.LENGTH_LONG).show() + webView.evaluateJavascript(code, null) + tokenSet = true + } + } + } + } inner class AppInterface { @JavascriptInterface @@ -77,6 +101,7 @@ class MainFragment : WebViewFragment() { webView.webViewClient = WebViewClient() // handle redirects in the app webView.webChromeClient = webChromeClient webView.addJavascriptInterface(AppInterface(), "appInterface") + webView.webViewClient = webViewClient val webSettings = webView.settings webSettings.javaScriptEnabled = true webSettings.domStorageEnabled = true @@ -85,7 +110,7 @@ class MainFragment : WebViewFragment() { val url = PreferenceManager.getDefaultSharedPreferences(activity) .getString(MainActivity.PREFERENCE_URL, null) if (url != null) { - webView.loadUrl(url) + webView.loadUrl(Uri.parse(url).buildUpon().appendEncodedPath("gps").build().toString()) } else { activity.fragmentManager .beginTransaction().replace(android.R.id.content, StartFragment()) @@ -96,8 +121,10 @@ class MainFragment : WebViewFragment() { private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val token = intent.getStringExtra(KEY_TOKEN) - val code = "updateNotificationToken && updateNotificationToken('$token')" - webView.evaluateJavascript(code, null) + PreferenceManager.getDefaultSharedPreferences(activity) + .edit() + .putString(MainActivity.PREFERENCE_TOKEN, token) + .apply() } } diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index 2439f15..6115950 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,4 +1,4 @@ - + diff --git a/build.gradle b/build.gradle index 03807b6..74dce81 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.6.0' + ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.2' - classpath 'com.google.gms:google-services:4.3.8' + classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.google.gms:google-services:4.3.10' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } -- cgit v1.2.3