1
0
Fork 0

Remove duplicate FirebasePushService

When we moved push to it's own component the class was supposed to have
been moved but git might have only picked it up as an addition.
master
Jonathan Almeida 2020-04-14 14:20:32 -04:00 committed by Jonathan Almeida
parent bded28a017
commit e97904662c
3 changed files with 2 additions and 63 deletions

View File

@ -244,7 +244,7 @@
android:exported="false" />
<service
android:name=".components.FirebasePushService"
android:name=".push.FirebasePushService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />

View File

@ -1,62 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.components
import android.annotation.SuppressLint
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
import com.leanplum.LeanplumPushFirebaseMessagingService
import mozilla.components.concept.push.PushService
import mozilla.components.feature.push.AutoPushFeature
import mozilla.components.lib.push.firebase.AbstractFirebasePushService
/**
* A wrapper class that only exists to delegate to [FirebaseMessagingService] instances.
*
* Implementation notes:
*
* This was a doozy...
*
* With Firebase Cloud Messaging, we've been given some tight constraints in order to get this to
* work:
* - We want to have multiple FCM message receivers for AutoPush and LeanPlum (for now), however
* there can only be one registered [FirebaseMessagingService] in the AndroidManifest.
* - The [LeanplumPushFirebaseMessagingService] does not function as expected unless it's the
* inherited service that receives the messages.
* - The [AutoPushService] is not strongly tied to being the inherited service, but the
* [AutoPushFeature] requires a reference to the push instance as a [PushService].
*
* We tried creating an empty [FirebaseMessagingService] that can hold a list of the services
* for delegating, but the [LeanplumPushFirebaseMessagingService] tries to get a reference to the
* Application Context, however,since the FCM service runs in a background process that gives a
* nullptr. Within LeanPlum, this is something that is probably provided internally.
*
* We tried to pass in an instance of the [AbstractFirebasePushService] to [FirebasePushService]
* through the constructor and delegate the implementation of a [PushService] to that, but alas,
* the service requires you to have an empty default constructor in order for the OS to do the
* initialization. For this reason, we created a singleton instance of the AutoPush instance since
* that lets us easily delegate the implementation to that, as well as make invocations when FCM
* receives new messages.
*/
class FirebasePushService : LeanplumPushFirebaseMessagingService(),
PushService by AutoPushService {
override fun onNewToken(newToken: String) {
AutoPushService.onNewToken(newToken)
super.onNewToken(newToken)
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
AutoPushService.onMessageReceived(remoteMessage)
super.onMessageReceived(remoteMessage)
}
}
/**
* A singleton instance of the FirebasePushService needed for communicating between FCM and the
* [AutoPushFeature].
*/
@SuppressLint("MissingFirebaseInstanceTokenRefresh") // Implemented internally.
object AutoPushService : AbstractFirebasePushService()

View File

@ -6,6 +6,7 @@ import mozilla.components.feature.push.PushConfig
import mozilla.components.lib.crash.CrashReporter
import mozilla.components.support.base.log.logger.Logger
import org.mozilla.fenix.R
import org.mozilla.fenix.push.FirebasePushService
/**
* Component group for push services. These components use services that strongly depend on