app安装,充电 通知
This commit is contained in:
parent
5630c02394
commit
8a442dbd54
|
|
@ -87,6 +87,26 @@
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
|
<receiver
|
||||||
|
android:name="com.remax.notification.newUtil.events.AppInstallReceiver"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="false">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||||
|
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
||||||
|
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||||
|
<data android:scheme="package" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
<receiver android:name="com.remax.notification.newUtil.events.PowerConnectionReceiver"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="false">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
|
||||||
|
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
package com.gamedog.vididin.main
|
package com.gamedog.vididin.main
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import com.ama.core.common.util.asSafe
|
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import androidx.fragment.app.FragmentManager
|
|
||||||
import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks
|
|
||||||
import androidx.viewpager2.widget.ViewPager2
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import com.ama.core.architecture.appBase.AppViewsActivity
|
import com.ama.core.architecture.appBase.AppViewsActivity
|
||||||
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
||||||
import com.ama.core.architecture.ext.toast
|
import com.ama.core.architecture.ext.toast
|
||||||
|
|
@ -20,8 +20,8 @@ import com.ama.core.architecture.util.SpUtil
|
||||||
import com.ama.core.architecture.util.bindViewPager2
|
import com.ama.core.architecture.util.bindViewPager2
|
||||||
import com.ama.core.architecture.util.setCommonNavigator
|
import com.ama.core.architecture.util.setCommonNavigator
|
||||||
import com.ama.core.architecture.util.setDataOrAdapter
|
import com.ama.core.architecture.util.setDataOrAdapter
|
||||||
|
import com.ama.core.common.util.asSafe
|
||||||
import com.blankj.utilcode.util.ActivityUtils
|
import com.blankj.utilcode.util.ActivityUtils
|
||||||
import com.vididin.real.money.game.R
|
|
||||||
import com.gamedog.vididin.VidiConst
|
import com.gamedog.vididin.VidiConst
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.adapter.MainTabsAdapter
|
import com.gamedog.vididin.adapter.MainTabsAdapter
|
||||||
|
|
@ -40,19 +40,21 @@ import com.remax.notification.builder.LANDING_NOTIFICATION_TITLE
|
||||||
import com.remax.notification.check.NotificationCheckController
|
import com.remax.notification.check.NotificationCheckController
|
||||||
import com.remax.notification.config.PushContent
|
import com.remax.notification.config.PushContent
|
||||||
import com.remax.notification.controller.NotificationLandingController
|
import com.remax.notification.controller.NotificationLandingController
|
||||||
|
import com.remax.notification.newUtil.events.AppInstallReceiver
|
||||||
|
import com.remax.notification.newUtil.events.PowerConnectionReceiver
|
||||||
import com.remax.notification.service.NotificationKeepAliveServiceManager
|
import com.remax.notification.service.NotificationKeepAliveServiceManager
|
||||||
|
import com.vididin.real.money.game.R
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlin.getValue
|
|
||||||
import com.vididin.real.money.game.databinding.ActivityMainBinding as ViewBinding
|
|
||||||
import com.gamedog.vididin.main.MainUiState as UiState
|
import com.gamedog.vididin.main.MainUiState as UiState
|
||||||
import com.gamedog.vididin.main.MainViewModel as ViewModel
|
import com.gamedog.vididin.main.MainViewModel as ViewModel
|
||||||
|
import com.vididin.real.money.game.databinding.ActivityMainBinding as ViewBinding
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabStyleListener {
|
class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabStyleListener {
|
||||||
|
|
||||||
|
private lateinit var mAppInstallReceiver: AppInstallReceiver
|
||||||
|
private lateinit var mPowerReceiver: BroadcastReceiver
|
||||||
private lateinit var activityLauncher: ActivityLauncher
|
private lateinit var activityLauncher: ActivityLauncher
|
||||||
override val mViewModel: ViewModel by viewModels()
|
override val mViewModel: ViewModel by viewModels()
|
||||||
private lateinit var navigatorAdapter: MainTabsAdapter
|
private lateinit var navigatorAdapter: MainTabsAdapter
|
||||||
|
|
@ -91,6 +93,7 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
mDateChangeReceiver = DateChangeReceiver()
|
mDateChangeReceiver = DateChangeReceiver()
|
||||||
val filter = IntentFilter(Intent.ACTION_DATE_CHANGED)
|
val filter = IntentFilter(Intent.ACTION_DATE_CHANGED)
|
||||||
registerReceiver(mDateChangeReceiver, filter)
|
registerReceiver(mDateChangeReceiver, filter)
|
||||||
|
registerReceivers()
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback(this@MainActivity) {
|
onBackPressedDispatcher.addCallback(this@MainActivity) {
|
||||||
if (mViewModel.canBack) {
|
if (mViewModel.canBack) {
|
||||||
|
|
@ -153,6 +156,7 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
unregisterReceiver(mDateChangeReceiver)
|
unregisterReceiver(mDateChangeReceiver)
|
||||||
|
unregisterReceivers()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
||||||
|
|
@ -282,6 +286,29 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun registerReceivers() {
|
||||||
|
mPowerReceiver = PowerConnectionReceiver()
|
||||||
|
val filter1 = IntentFilter().apply {
|
||||||
|
addAction(Intent.ACTION_POWER_CONNECTED)
|
||||||
|
addAction(Intent.ACTION_POWER_DISCONNECTED)
|
||||||
|
}
|
||||||
|
registerReceiver(mPowerReceiver, filter1)
|
||||||
|
|
||||||
|
mAppInstallReceiver = AppInstallReceiver()
|
||||||
|
val filter2 = IntentFilter().apply {
|
||||||
|
addAction(Intent.ACTION_PACKAGE_ADDED)
|
||||||
|
addAction(Intent.ACTION_PACKAGE_REPLACED)
|
||||||
|
addAction(Intent.ACTION_PACKAGE_REMOVED)
|
||||||
|
addDataScheme("package")
|
||||||
|
}
|
||||||
|
registerReceiver(mAppInstallReceiver, filter2)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun unregisterReceivers() {
|
||||||
|
unregisterReceiver(mPowerReceiver)
|
||||||
|
unregisterReceiver(mAppInstallReceiver)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:foregroundServiceType="specialUse" />
|
android:foregroundServiceType="specialUse" />
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
@ -49,6 +49,8 @@ class NotificationCheckController private constructor() {
|
||||||
UNLOCK("local_push"), // 解锁通知
|
UNLOCK("local_push"), // 解锁通知
|
||||||
BACKGROUND("local_push"), // app后台 - for withdraw
|
BACKGROUND("local_push"), // app后台 - for withdraw
|
||||||
FIXTIMEPOINT("fix_time_point_push"), // 每日固定时间点 "9:10""12:10""13:10""19:10""21:00""22:30""23:30"
|
FIXTIMEPOINT("fix_time_point_push"), // 每日固定时间点 "9:10""12:10""13:10""19:10""21:00""22:30""23:30"
|
||||||
|
APPINSTALL("app_install"),
|
||||||
|
CHARGE("charge"),
|
||||||
KEEPALIVE("local_push"), // 保活通知(无间隔限制)
|
KEEPALIVE("local_push"), // 保活通知(无间隔限制)
|
||||||
FCM("firebase_push"), // FCM 推送通知(无间隔限制)
|
FCM("firebase_push"), // FCM 推送通知(无间隔限制)
|
||||||
RESIDENT("top_notification") // 常驻(无间隔限制)
|
RESIDENT("top_notification") // 常驻(无间隔限制)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.remax.notification.newUtil.events
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import com.remax.notification.check.NotificationCheckController
|
||||||
|
import com.remax.notification.timing.NotificationTimingController
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class AppInstallReceiver : BroadcastReceiver() {
|
||||||
|
|
||||||
|
override fun onReceive(context: Context?, intent: Intent?) {
|
||||||
|
when (intent?.action) {
|
||||||
|
Intent.ACTION_PACKAGE_ADDED, Intent.ACTION_PACKAGE_REPLACED, Intent.ACTION_PACKAGE_REMOVED -> {
|
||||||
|
NotificationTimingController.getInstance()
|
||||||
|
.triggerNotificationIfAllowed(NotificationCheckController.NotificationType.APPINSTALL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.remax.notification.newUtil.events
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import com.remax.notification.check.NotificationCheckController
|
||||||
|
import com.remax.notification.timing.NotificationTimingController
|
||||||
|
|
||||||
|
class PowerConnectionReceiver : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
when (intent.action) {
|
||||||
|
Intent.ACTION_POWER_CONNECTED -> {
|
||||||
|
NotificationTimingController.getInstance()
|
||||||
|
.triggerNotificationIfAllowed(NotificationCheckController.NotificationType.CHARGE)
|
||||||
|
}
|
||||||
|
Intent.ACTION_POWER_DISCONNECTED -> {
|
||||||
|
NotificationTimingController.getInstance()
|
||||||
|
.triggerNotificationIfAllowed(NotificationCheckController.NotificationType.CHARGE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -279,6 +279,8 @@ class NotificationTimingController private constructor() : LifecycleObserver {
|
||||||
NotificationCheckController.NotificationType.FCM -> "FCM推送通知"
|
NotificationCheckController.NotificationType.FCM -> "FCM推送通知"
|
||||||
NotificationCheckController.NotificationType.RESIDENT -> "常驻通知"
|
NotificationCheckController.NotificationType.RESIDENT -> "常驻通知"
|
||||||
NotificationCheckController.NotificationType.FIXTIMEPOINT -> "固定时间点通知"
|
NotificationCheckController.NotificationType.FIXTIMEPOINT -> "固定时间点通知"
|
||||||
|
NotificationCheckController.NotificationType.APPINSTALL -> "APP安装卸载"
|
||||||
|
NotificationCheckController.NotificationType.CHARGE -> "手机充电"
|
||||||
}
|
}
|
||||||
DataReportManager.reportData("Notific_Pull", mapOf("topic" to "localPush"))
|
DataReportManager.reportData("Notific_Pull", mapOf("topic" to "localPush"))
|
||||||
|
|
||||||
|
|
@ -331,6 +333,14 @@ class NotificationTimingController private constructor() : LifecycleObserver {
|
||||||
NotificationCheckController.NotificationType.FIXTIMEPOINT -> {
|
NotificationCheckController.NotificationType.FIXTIMEPOINT -> {
|
||||||
showNotifyRandom()
|
showNotifyRandom()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NotificationCheckController.NotificationType.APPINSTALL -> {
|
||||||
|
showNotifyRandom()
|
||||||
|
}
|
||||||
|
|
||||||
|
NotificationCheckController.NotificationType.CHARGE -> {
|
||||||
|
showNotifyRandom()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue