@@ -3,6 +3,7 @@ package com.httpsms
33import android.app.PendingIntent
44import android.content.Context
55import android.content.Intent
6+ import android.content.IntentFilter
67import androidx.work.OneTimeWorkRequest
78import androidx.work.WorkManager
89import androidx.work.Worker
@@ -13,9 +14,11 @@ import timber.log.Timber
1314
1415
1516class MyFirebaseMessagingService : FirebaseMessagingService () {
17+ private val timberInit = false
1618
1719 // [START receive_message]
1820 override fun onMessageReceived (remoteMessage : RemoteMessage ) {
21+ initTimber()
1922 Timber .d(MyFirebaseMessagingService ::onMessageReceived.name)
2023 scheduleJob()
2124 }
@@ -28,6 +31,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
2831 * FCM registration token is initially generated so this is where you would retrieve the token.
2932 */
3033 override fun onNewToken (token : String ) {
34+ initTimber()
3135 Timber .d(" Refreshed token: $token " )
3236
3337 // If you want to send messages to this application instance or
@@ -59,6 +63,18 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
5963
6064 }
6165
66+ private fun initTimber () {
67+ if (Timber .treeCount > 1 ) {
68+ Timber .d(" timber is already initialized with count [${Timber .treeCount} ]" )
69+ return
70+ }
71+
72+ if (BuildConfig .DEBUG ) {
73+ Timber .plant(Timber .DebugTree ())
74+ Timber .plant(LogtailTree ())
75+ }
76+ }
77+
6278 internal class SendSmsWorker (appContext : Context , workerParams : WorkerParameters ) : Worker(appContext, workerParams) {
6379 override fun doWork (): Result {
6480 if (! Settings .isLoggedIn(applicationContext)) {
@@ -74,15 +90,28 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
7490 val owner = Settings .getOwner(applicationContext) ? : return Result .failure()
7591 val message = getMessage(applicationContext, owner) ? : return Result .failure()
7692
93+ registerReceivers(applicationContext, message.id)
94+
7795 sendMessage(
7896 message,
79- createPendingIntent(message, SmsManagerService .ACTION_SMS_SENT ),
80- createPendingIntent(message, SmsManagerService .ACTION_SMS_DELIVERED )
97+ createPendingIntent(message, SmsManagerService .sentAction(message.id) ),
98+ createPendingIntent(message, SmsManagerService .deliveredAction(message.id) )
8199 )
82100
83101 return Result .success()
84102 }
85103
104+ private fun registerReceivers (context : Context , messageID : String ) {
105+ context.registerReceiver(
106+ SentReceiver (),
107+ IntentFilter (SmsManagerService .sentAction(messageID))
108+ )
109+ context.registerReceiver(
110+ DeliveredReceiver (),
111+ IntentFilter (SmsManagerService .deliveredAction(messageID))
112+ )
113+ }
114+
86115 private fun getMessage (context : Context , owner : String ): Message ? {
87116 Timber .d(" fetching message" )
88117 val messages = HttpSmsApiService (Settings .getApiKeyOrDefault(context)).getOutstandingMessages(owner)
0 commit comments