I want to inject a class into a Service that extends FirebaseMessagingService
but as far as I know, in order to inject stuff in a Service class that service should extends DaggerService()
.
This is what I tried
@Singleton
@Component(
modules = [
AndroidSupportInjectionModule::class, // Default module, always on top
AppModule::class,
ServiceBuilderModule::class
]
)
interface AppComponent : AndroidInjector<App> {
// Override the builder
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
}
@Module
abstract class ServiceBuilderModule {
@ContributesAndroidInjector
abstract fun contributeFirebaseCloudMessaging(): CloudMessaging
}
The service class
class CloudMessaging : FirebaseMessagingService() {
@Inject
lateinit var parser: JsonParser
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
val msgData = parser.fromJsonString<CommonNotification>(remoteMessage.data.toString(), CommonNotification::class.java)
?: return
}
}
But the above code is not working as I am getting
kotlin.UninitializedPropertyAccessException: lateinit property parser has not been initialized