Commit 4a5325be authored by wanglei's avatar wanglei

=========同步cleanmastermax的fcm修改===========

parent ca0af31e
......@@ -241,6 +241,7 @@
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<receiver android:name=".display.fcm.FCMCheckReceiver" />
</application>
</manifest>
\ No newline at end of file
......@@ -2,6 +2,10 @@ package com.base.superfilemanager
import android.annotation.SuppressLint
import android.app.Activity
import android.app.job.JobInfo
import android.app.job.JobScheduler
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
......@@ -17,6 +21,7 @@ import com.base.superfilemanager.display.ActionBroadcast.Companion.initBroadcast
import com.base.superfilemanager.display.NotificationService
import com.base.superfilemanager.display.NotificationUtils
import com.base.superfilemanager.display.fcm.FcmHelper
import com.base.superfilemanager.display.fcm.NotificationJobService
import com.base.superfilemanager.helps.BaseApplication
import com.base.superfilemanager.helps.ComUtils.requestCfg
import com.base.superfilemanager.helps.ConfigHelper
......@@ -72,21 +77,21 @@ class MyApplication : BaseApplication() {
FirebaseApp.initializeApp(this)
FcmHelper.getToken()
FcmHelper.subscribeToTopic()
val isBoolean = NotificationUtils.isNotificationExist(this, 1)
if (isBoolean) {
Log.d("MyService", "常驻通知栏存在");
return
}
val intent = Intent(this, NotificationService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
initBroadcast()
FcmHelper.startFCMCheckAlarm(this)
initJob()
Log.d("MyService", "startService:" + Process.myPid());
}
private fun initJob() {
val jobScheduler = getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
val job = JobInfo.Builder(0, ComponentName(this, NotificationJobService::class.java))
.setMinimumLatency(0L)
.setOverrideDeadline(0L)
.setPersisted(true)
.build()
jobScheduler.schedule(job)
}
@SuppressLint("UnspecifiedRegisterReceiverFlag")
private fun initLifeListener() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
......
package com.base.superfilemanager.display.fcm
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import com.base.superfilemanager.helps.EventHelper
import com.google.firebase.messaging.FirebaseMessaging
class FCMCheckReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// 检查FCM连接并重新连接(如果需要)
// 这里可以根据具体需求自行实现
val boolean = FirebaseMessaging.getInstance().isAutoInitEnabled()
if (boolean) {
EventHelper.event("fcm_autoInit_suc")
} else {
EventHelper.event("fcm_autoInit_fail")
}
Log.d("FcmHelper", "FCMCheckReceiver: $boolean")
}
}
package com.base.superfilemanager.display.fcm
import android.annotation.SuppressLint
import android.app.AlarmManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.util.Log
import com.google.android.gms.tasks.OnCompleteListener
import com.google.android.gms.tasks.Task
......@@ -39,4 +44,34 @@ object FcmHelper {
Log.d(TAG, "token: $token")
})
}
@SuppressLint("UnspecifiedImmutableFlag")
fun startFCMCheckAlarm(context: Context) {
val intervalMillis = (15 * 60 * 1000).toLong() // 1分钟
// 判断是否已经在运行
val intent = Intent(context, FCMCheckReceiver::class.java)
val isRunning =
PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE) != null
if (isRunning) {
Log.d(TAG, "FCM check alarm is already running")
return
}
// 获取AlarmManager实例
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
// 创建PendingIntent,用于在指定时间触发广播
val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
// 设置每隔一段时间触发一次广播
val triggerAtMillis = System.currentTimeMillis() + intervalMillis
alarmManager.setRepeating(
AlarmManager.RTC_WAKEUP,
triggerAtMillis,
intervalMillis,
pendingIntent
)
Log.d(TAG, "FCM check alarm is started")
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import android.app.job.JobInfo
import android.app.job.JobScheduler
import android.content.ComponentName
import android.content.Context
import android.os.Build
import android.util.Log
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
......@@ -17,6 +18,11 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
val pushStayTime = remoteMessage.data["push_stay_time"]?.toLongOrNull() ?: 0
EventHelper.event("fcm_message_received", pushStayTime.toString())
NotificationUtils.sendTimerPush(pushStayTime)
FcmHelper.startFCMCheckAlarm(this)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S) {
return
}
initJob()
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment