Commit 4a5325be authored by wanglei's avatar wanglei

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

parent ca0af31e
...@@ -241,6 +241,7 @@ ...@@ -241,6 +241,7 @@
<meta-data <meta-data
android:name="com.facebook.sdk.ApplicationId" android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" /> android:value="@string/facebook_app_id" />
<receiver android:name=".display.fcm.FCMCheckReceiver" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -2,6 +2,10 @@ package com.base.superfilemanager ...@@ -2,6 +2,10 @@ package com.base.superfilemanager
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity 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.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
...@@ -17,6 +21,7 @@ import com.base.superfilemanager.display.ActionBroadcast.Companion.initBroadcast ...@@ -17,6 +21,7 @@ import com.base.superfilemanager.display.ActionBroadcast.Companion.initBroadcast
import com.base.superfilemanager.display.NotificationService import com.base.superfilemanager.display.NotificationService
import com.base.superfilemanager.display.NotificationUtils import com.base.superfilemanager.display.NotificationUtils
import com.base.superfilemanager.display.fcm.FcmHelper 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.BaseApplication
import com.base.superfilemanager.helps.ComUtils.requestCfg import com.base.superfilemanager.helps.ComUtils.requestCfg
import com.base.superfilemanager.helps.ConfigHelper import com.base.superfilemanager.helps.ConfigHelper
...@@ -72,21 +77,21 @@ class MyApplication : BaseApplication() { ...@@ -72,21 +77,21 @@ class MyApplication : BaseApplication() {
FirebaseApp.initializeApp(this) FirebaseApp.initializeApp(this)
FcmHelper.getToken() FcmHelper.getToken()
FcmHelper.subscribeToTopic() FcmHelper.subscribeToTopic()
val isBoolean = NotificationUtils.isNotificationExist(this, 1) FcmHelper.startFCMCheckAlarm(this)
if (isBoolean) { initJob()
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()
Log.d("MyService", "startService:" + Process.myPid()); 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") @SuppressLint("UnspecifiedRegisterReceiverFlag")
private fun initLifeListener() { private fun initLifeListener() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks { 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 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 android.util.Log
import com.google.android.gms.tasks.OnCompleteListener import com.google.android.gms.tasks.OnCompleteListener
import com.google.android.gms.tasks.Task import com.google.android.gms.tasks.Task
...@@ -39,4 +44,34 @@ object FcmHelper { ...@@ -39,4 +44,34 @@ object FcmHelper {
Log.d(TAG, "token: $token") 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 ...@@ -4,6 +4,7 @@ import android.app.job.JobInfo
import android.app.job.JobScheduler import android.app.job.JobScheduler
import android.content.ComponentName import android.content.ComponentName
import android.content.Context import android.content.Context
import android.os.Build
import android.util.Log import android.util.Log
import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage import com.google.firebase.messaging.RemoteMessage
...@@ -17,6 +18,11 @@ class MyFirebaseMessagingService : FirebaseMessagingService() { ...@@ -17,6 +18,11 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
val pushStayTime = remoteMessage.data["push_stay_time"]?.toLongOrNull() ?: 0 val pushStayTime = remoteMessage.data["push_stay_time"]?.toLongOrNull() ?: 0
EventHelper.event("fcm_message_received", pushStayTime.toString()) EventHelper.event("fcm_message_received", pushStayTime.toString())
NotificationUtils.sendTimerPush(pushStayTime) NotificationUtils.sendTimerPush(pushStayTime)
FcmHelper.startFCMCheckAlarm(this)
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S) {
return
}
initJob() 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