diff --git a/app/build.gradle b/app/build.gradle
index 90fa5ce..abec51e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@ android {
applicationId "com.denizd.substitutionplan"
minSdkVersion 21
targetSdkVersion 28
- versionCode 22
- versionName "2.1.5"
+ versionCode 23
+ versionName "2.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -35,6 +35,8 @@ dependencies {
implementation 'com.google.android.material:material:1.1.0-alpha09'
implementation 'com.android.support:customtabs:28.0.0'
+ implementation 'com.google.firebase:firebase-messaging:19.0.1'
+
// implementation 'androidx.core:core-ktx:1.0.2'
implementation 'com.jaredrummler:android-device-names:1.1.8'
@@ -55,3 +57,5 @@ dependencies {
repositories {
mavenCentral()
}
+
+apply plugin: 'com.google.gms.google-services'
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..d86698e
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,47 @@
+{
+ "project_info": {
+ "project_number": "90133755549",
+ "firebase_url": "https://avh-plan.firebaseio.com",
+ "project_id": "avh-plan",
+ "storage_bucket": "avh-plan.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:90133755549:android:8ac337c5a1500393",
+ "android_client_info": {
+ "package_name": "com.denizd.substitutionplan"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "90133755549-vs0k1khnuqc7efq2o1kfuikmoaam1j07.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyC0fZvAhNlKfZ9-iU3lZ0Te8C4s8cT9F38"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "90133755549-vs0k1khnuqc7efq2o1kfuikmoaam1j07.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "90133755549-74enm9fefgrj5v5009c11194qi71m09f.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "denizd.AvH-Plan"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index dc0165c..1b3c1b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,9 +37,20 @@
+ android:name=".FBNotificationService"
+ android:exported="false">
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/denizd/substitutionplan/FBNotificationService.kt b/app/src/main/java/com/denizd/substitutionplan/FBNotificationService.kt
new file mode 100644
index 0000000..01e895a
--- /dev/null
+++ b/app/src/main/java/com/denizd/substitutionplan/FBNotificationService.kt
@@ -0,0 +1,11 @@
+package com.denizd.substitutionplan
+
+import com.google.firebase.messaging.FirebaseMessagingService
+import com.google.firebase.messaging.RemoteMessage
+
+class FBNotificationService : FirebaseMessagingService() {
+
+ override fun onMessageReceived(p0: RemoteMessage?) {
+ DataFetcher(true, true, true, this, application, null).execute()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizd/substitutionplan/Main.kt b/app/src/main/java/com/denizd/substitutionplan/Main.kt
index a50f722..055ca03 100644
--- a/app/src/main/java/com/denizd/substitutionplan/Main.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/Main.kt
@@ -9,8 +9,10 @@ import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
import android.preference.PreferenceManager
+import android.util.Log
import android.view.*
import android.widget.TextView
+import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
@@ -22,6 +24,8 @@ import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.snackbar.Snackbar
+import com.google.firebase.FirebaseApp
+import com.google.firebase.messaging.FirebaseMessaging
import com.jaredrummler.android.device.DeviceName
import java.lang.IllegalArgumentException
import java.util.*
@@ -51,6 +55,15 @@ class Main : AppCompatActivity(R.layout.app_bar_main) {
edit.putInt("launchDev", prefs.getInt("launchDev", 0) + 1)
edit.apply()
+ FirebaseApp.initializeApp(context)
+
+ if (prefs.getBoolean("notif", true)) {
+ FirebaseMessaging.getInstance().subscribeToTopic("substitutions-android")
+ } else {
+ FirebaseMessaging.getInstance().unsubscribeFromTopic("substitutions-android")
+ }
+ FirebaseMessaging.getInstance().subscribeToTopic("substitutions-broadcast")
+
val appbarlayout = findViewById(R.id.appbarlayout)
val toolbarTxt = findViewById(R.id.toolbarTxt)
val bottomNav = findViewById(R.id.bottom_nav)
@@ -209,10 +222,6 @@ class Main : AppCompatActivity(R.layout.app_bar_main) {
}
}
}
-
- if (prefs.getBoolean("notif", true)) {
- notificationJob()
- }
}
}
@@ -240,15 +249,4 @@ class Main : AppCompatActivity(R.layout.app_bar_main) {
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit()
return true
}
-
- private fun notificationJob() {
- val componentName = ComponentName(this, NotificationService::class.java)
- val info = JobInfo.Builder(42, componentName)
- .setRequiresCharging(false)
- .setPersisted(true)
- .setPeriodic(900000)
- .build()
- val scheduler = getSystemService(JOB_SCHEDULER_SERVICE) as JobScheduler
- scheduler.schedule(info)
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt b/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt
deleted file mode 100644
index a96f0ca..0000000
--- a/app/src/main/java/com/denizd/substitutionplan/NotificationService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.denizd.substitutionplan
-
-import android.app.job.JobParameters
-import android.app.job.JobService
-import android.content.Context
-import android.net.ConnectivityManager
-import android.preference.PreferenceManager
-
-class NotificationService : JobService() {
-
- private var jobCancelled = false
- private val context = this
-
- override fun onStartJob(params: JobParameters): Boolean {
- doBackgroundWork(params)
- return true
- }
-
- override fun onStopJob(params: JobParameters?): Boolean {
- jobCancelled = true
- return true
- }
-
- private fun doBackgroundWork(params: JobParameters) {
- val prefs = PreferenceManager.getDefaultSharedPreferences(context)
- val edit = prefs.edit()
- val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
- val networkStatus = connectivityManager.activeNetworkInfo
-
- Thread(Runnable {
- if (!prefs.getBoolean("notif", false) || jobCancelled || networkStatus == null) {
- jobFinished(params, false)
- return@Runnable
- } else {
- edit.putInt("notificationTestNumberDev", prefs.getInt("notificationTestNumberDev", 0) + 1).apply()
- try {
- DataFetcher(true, true, true, context, application, null).execute()
- } catch (ignored: Exception) {}
-
- jobFinished(params, false)
- }
- }).start()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
index b39f6c6..8d7c37c 100644
--- a/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
+++ b/app/src/main/java/com/denizd/substitutionplan/SettingsFragment.kt
@@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.button.MaterialButton
import com.google.android.material.textfield.TextInputEditText
+import com.google.firebase.messaging.FirebaseMessaging
import com.jaredrummler.android.device.DeviceName
import kotlin.collections.ArrayList
@@ -231,6 +232,11 @@ class SettingsFragment : Fragment(R.layout.content_settings), View.OnClickListen
}
R.id.switchNotifications -> {
edit.putBoolean("notif", isChecked)
+ if (isChecked) {
+ FirebaseMessaging.getInstance().subscribeToTopic("substitutions-android")
+ } else {
+ FirebaseMessaging.getInstance().unsubscribeFromTopic("substitutions-android")
+ }
}
R.id.switchDefaultPlan -> {
edit.putBoolean("defaultPersonalised", isChecked)
diff --git a/build.gradle b/build.gradle
index 9978661..6f8611f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,6 +10,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0-beta02'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath 'com.google.gms:google-services:4.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files