Browse Source

Bump to latest firebase messaging

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 5 years ago
parent
commit
271e163c30

+ 1 - 1
gplay.gradle

@@ -1,3 +1,3 @@
 dependencies {
-    implementation "com.google.firebase:firebase-messaging:17.3.0"
+    implementation "com.google.firebase:firebase-messaging:20.1.3"
 }

+ 0 - 7
src/gplay/AndroidManifest.xml

@@ -66,13 +66,6 @@
             </intent-filter>
         </service>
 
-        <service
-            android:name=".services.firebase.NCFirebaseInstanceIDService">
-            <intent-filter>
-                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
-            </intent-filter>
-        </service>
-
         <service
             android:name="com.evernote.android.job.gcm.PlatformGcmService"
             android:enabled="true"

+ 3 - 2
src/gplay/java/com/nextcloud/client/di/VariantComponentsModule.java

@@ -20,14 +20,15 @@
 package com.nextcloud.client.di;
 
 import com.owncloud.android.authentication.ModifiedAuthenticatorActivity;
-import com.owncloud.android.services.firebase.NCFirebaseInstanceIDService;
+import com.owncloud.android.services.firebase.NCFirebaseMessagingService;
 
 import dagger.Module;
 import dagger.android.ContributesAndroidInjector;
 
 @Module
 abstract class VariantComponentsModule {
-    @ContributesAndroidInjector abstract NCFirebaseInstanceIDService ncFirebaseInstanceIDService();
+    @ContributesAndroidInjector
+    abstract NCFirebaseMessagingService nCFirebaseMessagingService();
 
     @ContributesAndroidInjector
     abstract ModifiedAuthenticatorActivity modifiedAuthenticatorActivity();

+ 0 - 55
src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseInstanceIDService.java

@@ -1,55 +0,0 @@
-/**
- * Nextcloud Android client application
- *
- * @author Mario Danic
- * Copyright (C) 2017 Mario Danic
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package com.owncloud.android.services.firebase;
-
-import android.text.TextUtils;
-
-import com.google.firebase.iid.FirebaseInstanceId;
-import com.google.firebase.iid.FirebaseInstanceIdService;
-import com.nextcloud.client.account.UserAccountManager;
-import com.nextcloud.client.preferences.AppPreferences;
-import com.owncloud.android.R;
-import com.owncloud.android.utils.PushUtils;
-
-import javax.inject.Inject;
-
-import dagger.android.AndroidInjection;
-
-public class NCFirebaseInstanceIDService extends FirebaseInstanceIdService {
-
-
-    @Inject AppPreferences preferences;
-    @Inject UserAccountManager accountManager;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        AndroidInjection.inject(this);
-    }
-
-    @Override
-    public void onTokenRefresh() {
-        //You can implement this method to store the token on your server
-        if (!TextUtils.isEmpty(getResources().getString(R.string.push_server_url))) {
-            preferences.setPushToken(FirebaseInstanceId.getInstance().getToken());
-            PushUtils.pushRegistrationToServer(accountManager, preferences.getPushToken());
-        }
-    }
-}

+ 41 - 13
src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseMessagingService.java

@@ -19,28 +19,56 @@
  */
 package com.owncloud.android.services.firebase;
 
+import android.text.TextUtils;
+
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
 import com.google.firebase.messaging.FirebaseMessagingService;
 import com.google.firebase.messaging.RemoteMessage;
+import com.nextcloud.client.account.UserAccountManager;
+import com.nextcloud.client.preferences.AppPreferences;
+import com.owncloud.android.R;
 import com.owncloud.android.jobs.NotificationJob;
+import com.owncloud.android.utils.PushUtils;
+
+import javax.inject.Inject;
+
+import androidx.annotation.NonNull;
+import dagger.android.AndroidInjection;
 
 public class NCFirebaseMessagingService extends FirebaseMessagingService {
+    @Inject AppPreferences preferences;
+    @Inject UserAccountManager accountManager;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        AndroidInjection.inject(this);
+    }
 
     @Override
-    public void onMessageReceived(RemoteMessage remoteMessage) {
-        if (remoteMessage != null && remoteMessage.getData() != null) {
-            PersistableBundleCompat persistableBundleCompat = new PersistableBundleCompat();
-            persistableBundleCompat.putString(NotificationJob.KEY_NOTIFICATION_SUBJECT, remoteMessage.getData().get
-                    (NotificationJob.KEY_NOTIFICATION_SUBJECT));
-            persistableBundleCompat.putString(NotificationJob.KEY_NOTIFICATION_SIGNATURE, remoteMessage.getData().get
-                    (NotificationJob.KEY_NOTIFICATION_SIGNATURE));
-            new JobRequest.Builder(NotificationJob.TAG)
-                    .addExtras(persistableBundleCompat)
-                    .setUpdateCurrent(false)
-                    .startNow()
-                    .build()
-                    .schedule();
+    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+        remoteMessage.getData();
+        PersistableBundleCompat persistableBundleCompat = new PersistableBundleCompat();
+        persistableBundleCompat.putString(NotificationJob.KEY_NOTIFICATION_SUBJECT, remoteMessage.getData().get
+            (NotificationJob.KEY_NOTIFICATION_SUBJECT));
+        persistableBundleCompat.putString(NotificationJob.KEY_NOTIFICATION_SIGNATURE, remoteMessage.getData().get
+            (NotificationJob.KEY_NOTIFICATION_SIGNATURE));
+        new JobRequest.Builder(NotificationJob.TAG)
+            .addExtras(persistableBundleCompat)
+            .setUpdateCurrent(false)
+            .startNow()
+            .build()
+            .schedule();
+    }
+
+    @Override
+    public void onNewToken(@NonNull String newToken) {
+        super.onNewToken(newToken);
+
+        if (!TextUtils.isEmpty(getResources().getString(R.string.push_server_url))) {
+            preferences.setPushToken(newToken);
+            PushUtils.pushRegistrationToServer(accountManager, preferences.getPushToken());
         }
     }
 }