DoggyZhang 1 місяць тому
батько
коміт
a685f65d51

+ 3 - 1
app/build.gradle

@@ -477,7 +477,7 @@ dependencies {
     api libs.frame.startup
 
     api libs.frame.locale
-    api libs.frame.push
+    //api libs.frame.push
     api libs.frame.media
     api libs.frame.share
     api libs.frame.dot
@@ -504,6 +504,8 @@ dependencies {
     implementation project(":tuicommunity")
     implementation project(":tuicustomerserviceplugin")
     //implementation project(":tuiroomkit")
+    api libs.tencent.timpush
+    api libs.tencent.timpush.fcm
 
 //    debugApi "com.tuzhenlei:crashhandler:1.0.1"
 //    debugApi 'cat.ereza:customactivityoncrash:2.3.0'

+ 2 - 1
app/dependencies/releaseRuntimeClasspath.txt

@@ -217,6 +217,8 @@ com.squareup.okio:okio-jvm:3.6.0
 com.squareup.okio:okio:3.6.0
 com.squareup.wire:wire-runtime:2.3.0-RC1
 com.tencent.imsdk:imsdk-plus:8.7.7201
+com.tencent.timpush:fcm:8.8.7357
+com.tencent.timpush:timpush:8.8.7357
 com.tencent.vasdolly:common:3.0.6
 com.tencent.vasdolly:helper:3.0.6
 com.tencent.vasdolly:reader:3.0.6
@@ -248,7 +250,6 @@ com.wenext.android:frame-media:6.0.5
 com.wenext.android:frame-mvvm:6.0.0
 com.wenext.android:frame-network:6.1.3
 com.wenext.android:frame-oss:6.0.4
-com.wenext.android:frame-push:6.0.0
 com.wenext.android:frame-router-annotation:6.0.0
 com.wenext.android:frame-router-api:6.0.0
 com.wenext.android:frame-security:6.0.1

+ 4 - 0
app/src/main/AndroidManifest.xml

@@ -77,6 +77,10 @@
             android:name="com.google.firebase.messaging.default_notification_icon"
             android:resource="@drawable/notification_ic" />
 
+        <meta-data
+            android:name="com.google.firebase.messaging.default_notification_color"
+            android:resource="@android:color/white" />
+
         <receiver
             android:name="com.appsflyer.SingleInstallBroadcastReceiver"
             android:exported="true">

+ 2 - 5
app/src/main/java/com/adealink/weparty/App.kt

@@ -32,7 +32,6 @@ import com.adealink.frame.media.createMediaService
 import com.adealink.frame.network.INetworkService
 import com.adealink.frame.network.NetworkService
 import com.adealink.frame.oss.IOssService
-import com.adealink.frame.push.manager.pushService
 import com.adealink.frame.router.Router
 import com.adealink.frame.router.manager.deeplinkRouterManager
 import com.adealink.frame.security.createSecurityService
@@ -82,8 +81,6 @@ import com.adealink.weparty.network.INetworkManager
 import com.adealink.weparty.network.NetworkConfig
 import com.adealink.weparty.network.NetworkManager
 import com.adealink.weparty.oss.OssService
-import com.adealink.weparty.push.NotificationUtil
-import com.adealink.weparty.push.PushServiceConfig
 import com.adealink.weparty.router.RouterConfig
 import com.adealink.weparty.security.SecurityConfig
 import com.adealink.weparty.share.ShareConfig
@@ -230,8 +227,8 @@ class App : SplitCompatApplication(), ActivityLifecycleCallbacksExt {
      */
     inner class InitPush : MainThreadStartUpTask() {
         override fun run() {
-            pushService.init(PushServiceConfig())
-            NotificationUtil.createNotificationChannel(getCompatString(R.string.channel_event))
+//            pushService.init(PushServiceConfig())
+//            NotificationUtil.createNotificationChannel(getCompatString(R.string.channel_event))
         }
     }
 

+ 12 - 16
app/src/main/java/com/adealink/weparty/MainActivity.kt

@@ -7,9 +7,6 @@ import android.view.WindowManager
 import androidx.fragment.app.FragmentContainerView
 import com.adealink.frame.aab.util.getCompatColor
 import com.adealink.frame.log.Log
-import com.adealink.frame.push.data.KEY_PUSH_DEEPLINK
-import com.adealink.frame.push.data.KEY_PUSH_ID
-import com.adealink.frame.push.data.KEY_PUSH_MESSAGE_TYPE
 import com.adealink.frame.router.Router
 import com.adealink.frame.router.annotation.BindExtra
 import com.adealink.frame.router.annotation.RouterUri
@@ -18,7 +15,6 @@ import com.adealink.weparty.commonui.BaseActivity
 import com.adealink.weparty.module.account.Account
 import com.adealink.weparty.module.account.AccountModule
 import com.adealink.weparty.module.profile.ProfileModule
-import com.adealink.weparty.push.PushStatEvent
 import com.adealink.weparty.ui.MainStartUpFragment
 import com.adealink.weparty.ui.main.MainFragment
 import com.adealink.weparty.update.updateManager
@@ -118,18 +114,18 @@ class MainActivity : BaseActivity() {
         }
         inflateMainFragment(from)
         intent ?: return
-        val pushDeeplink = intent.getStringExtra(KEY_PUSH_DEEPLINK)
-        if (!pushDeeplink.isNullOrEmpty()) {
-            Log.d(TAG, "dispatchPath, pushDeeplink:$pushDeeplink")
-            PushStatEvent(PushStatEvent.Action.CLICK).apply {
-                type to (intent.extras?.getString(KEY_PUSH_MESSAGE_TYPE) ?: "1")
-                pushId to (intent.extras?.getString(KEY_PUSH_ID) ?: "1")
-                source to "new_fcm_push"
-                deeplink to pushDeeplink
-            }.send()
-            goLocalLinkPage(this, pushDeeplink)
-            return
-        }
+//        val pushDeeplink = intent.getStringExtra(KEY_PUSH_DEEPLINK)
+//        if (!pushDeeplink.isNullOrEmpty()) {
+//            Log.d(TAG, "dispatchPath, pushDeeplink:$pushDeeplink")
+//            PushStatEvent(PushStatEvent.Action.CLICK).apply {
+//                type to (intent.extras?.getString(KEY_PUSH_MESSAGE_TYPE) ?: "1")
+//                pushId to (intent.extras?.getString(KEY_PUSH_ID) ?: "1")
+//                source to "new_fcm_push"
+//                deeplink to pushDeeplink
+//            }.send()
+//            goLocalLinkPage(this, pushDeeplink)
+//            return
+//        }
 
         val dispatchPath = intent.getStringExtra(deeplinkRouterManager.getDispatchPathKey())
         if (!dispatchPath.isNullOrEmpty()) {

+ 9 - 10
app/src/main/java/com/adealink/weparty/deeplink/DeepLinkConfig.kt

@@ -5,7 +5,6 @@ import android.content.Intent
 import android.net.Uri
 import androidx.core.net.toUri
 import com.adealink.frame.log.Log
-import com.adealink.frame.push.manager.pushService
 import com.adealink.frame.router.constant.TAG_ROUTER
 import com.adealink.frame.router.manager.IDeepLinkConfig
 import com.adealink.frame.util.AppUtil
@@ -14,7 +13,6 @@ import com.adealink.weparty.BuildConfig
 import com.adealink.weparty.MainActivity
 import com.adealink.weparty.module.account.Account
 import com.adealink.weparty.module.account.AccountModule
-import com.adealink.weparty.push.PushStatEvent
 
 class DeepLinkConfig : IDeepLinkConfig {
     override fun isLogin(): Boolean {
@@ -46,12 +44,12 @@ class DeepLinkConfig : IDeepLinkConfig {
     }
 
     override fun reportPushClick(intent: Intent) {
-        val pushMessage = pushService.getPushMessageFromIntent(intent) ?: return
-        PushStatEvent(PushStatEvent.Action.CLICK).apply {
-            pushId to "${pushMessage.pushId}"
-            type to "${pushMessage.messageType}"
-            deeplink to "${pushMessage.deeplink}"
-        }.send()
+//        val pushMessage = pushService.getPushMessageFromIntent(intent) ?: return
+//        PushStatEvent(PushStatEvent.Action.CLICK).apply {
+//            pushId to "${pushMessage.pushId}"
+//            type to "${pushMessage.messageType}"
+//            deeplink to "${pushMessage.deeplink}"
+//        }.send()
     }
 
     override fun getDynamicLinkRealUriFromIntent(intent: Intent, callback: (uri: Uri?) -> Unit) {
@@ -83,8 +81,9 @@ class DeepLinkConfig : IDeepLinkConfig {
     }
 
     override fun getPushMessageType(intent: Intent): Long? {
-        val pushMessage = pushService.getPushMessageFromIntent(intent) ?: return null
-        return pushMessage.messageType
+//        val pushMessage = pushService.getPushMessageFromIntent(intent) ?: return null
+//        return pushMessage.messageType
+        return null
     }
 
     override fun getDispatchPathKey(): String {

+ 0 - 211
app/src/main/java/com/adealink/weparty/push/NotificationUtil.kt

@@ -2,225 +2,14 @@ package com.adealink.weparty.push
 
 import android.Manifest
 import android.annotation.SuppressLint
-import android.app.ActivityOptions
-import android.app.Notification
-import android.app.NotificationChannel
-import android.app.NotificationManager
-import android.app.PendingIntent
-import android.content.Context
-import android.content.Intent
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import android.net.Uri
 import android.os.Build
-import android.widget.RemoteViews
-import androidx.core.app.NotificationCompat
-import androidx.core.app.NotificationManagerCompat
 import androidx.fragment.app.FragmentActivity
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.aab.util.getCompatDrawable
 import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.coroutine.dispatcher.Dispatcher
-import com.adealink.frame.image.imageService
-import com.adealink.frame.image.listener.IImageLoadResultListener
-import com.adealink.frame.push.data.KEY_PUSH_DEEPLINK
-import com.adealink.frame.push.data.KEY_PUSH_ID
-import com.adealink.frame.push.data.KEY_PUSH_MESSAGE_TYPE
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.RouterDeepLinkActivity
-import com.adealink.frame.util.AppUtil
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.frame.util.ImageUtil
-import com.adealink.frame.util.PackageUtil
-import com.adealink.weparty.AppModule
 import com.adealink.weparty.R
-import com.adealink.weparty.commonui.imageview.CircleDrawable
 import com.adealink.weparty.commonui.widget.CommonDialog
 import com.adealink.weparty.permission.PermissionUtils
-import com.adealink.weparty.push.data.JiehePushMessage
-import com.adealink.weparty.push.data.PushMessageType
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import com.adealink.weparty.R as APP_R
 
 object NotificationUtil {
-    private fun forwardIntent(pushMessage: JiehePushMessage): Intent {
-        var deeplink = pushMessage.deeplink
-        if (deeplink.isNullOrEmpty()) {
-            deeplink = Router.getDeepLink(AppModule.Main.PATH)
-        }
-        return Intent().apply {
-            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-            setPackage(PackageUtil.getPackageName())
-            setClass(AppUtil.appContext, RouterDeepLinkActivity::class.java)
-            putExtra(KEY_PUSH_ID, pushMessage.pushId)
-            putExtra(KEY_PUSH_MESSAGE_TYPE, pushMessage.messageType)
-            putExtra(KEY_PUSH_DEEPLINK, pushMessage.deeplink)
-            action = Intent.ACTION_VIEW
-            data = Uri.parse(deeplink)
-        }
-    }
-
-    fun createNotificationChannel(channelId: String) {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            val channel = NotificationChannel(channelId,
-                channelId,
-                NotificationManager.IMPORTANCE_HIGH).apply {
-                description = channelId
-            }
-            channel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC
-            val notificationManager: NotificationManager? =
-                AppUtil.getSystemService<NotificationManager>(Context.NOTIFICATION_SERVICE)
-            notificationManager?.createNotificationChannel(channel)
-        }
-    }
-
-    fun showNotification(pushMessage: JiehePushMessage, completeCallback: (() -> Unit)? = null) {
-        if (pushMessage.pushId < 0 && pushMessage.messageType < 0) {
-            return
-        }
-        val avatarImageWidth = DisplayUtil.dp2px(48f)
-        val iconUrl = pushMessage.getLargeIconUrl()
-        if (iconUrl == null) {
-            showInBroadcastNotification(pushMessage, null)
-            return
-        }
-
-        val url = imageService.getResizeUrl(iconUrl, avatarImageWidth, avatarImageWidth)
-        imageService.fetchImage(url, object : IImageLoadResultListener {
-            override fun onSuccess(bitmap: Bitmap) {
-                super.onSuccess(bitmap)
-                showInBroadcastNotification(pushMessage, bitmap)
-                completeCallback?.invoke()
-            }
-            override fun onFailed() {
-                super.onFailed()
-                showInBroadcastNotification(pushMessage, null)
-                completeCallback?.invoke()
-            }
-        })
-    }
-
-    private fun showInBroadcastNotification(pushMessage: JiehePushMessage, bitmap: Bitmap?) {
-        CoroutineScope(Dispatcher.UI).launch {
-            if(needHandleNotification(pushMessage.messageType)) {
-                handleNotification(pushMessage)
-                return@launch
-            }
-            val notifyId = pushMessage.pushId.toInt()
-            val group = pushMessage.getTargetId() ?: ""
-            val resultPendingIntent = if (Build.VERSION.SDK_INT == Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
-                PendingIntent.getActivity(
-                    AppUtil.appContext,
-                    notifyId,
-                    forwardIntent(pushMessage),
-                    PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
-                    ActivityOptions.makeBasic().setPendingIntentBackgroundActivityStartMode(
-                        ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
-                    ).toBundle()
-                )
-            } else {
-                PendingIntent.getActivity(
-                    AppUtil.appContext,
-                    notifyId,
-                    forwardIntent(pushMessage),
-                    PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
-                )
-            }
-            var title = pushMessage.pushTitle ?: getCompatString(R.string.app_name)
-
-            val content = pushMessage.pushContent ?: ""
-            val builder = NotificationCompat.Builder(AppUtil.appContext, pushMessage.channelId)
-                .setSmallIcon(getNotificationSmallIcon())
-                .setContentTitle(title)
-                .setContentText(content)
-                .setColor(getCompatColor(APP_R.color.color_app_main))
-                .setContentIntent(resultPendingIntent)
-                .setPriority(NotificationCompat.PRIORITY_MAX)
-                .setAutoCancel(true)
-                .setTicker(content)
-                .setDefaults(Notification.DEFAULT_ALL)
-            var roundedBitmap: Bitmap?
-            withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                roundedBitmap = ImageUtil.getRoundedCornerBitmap(bitmap, DisplayUtil.dp2px(8f).toFloat())
-                if (roundedBitmap == null) {
-                    roundedBitmap = CircleDrawable.drawableToBitmap(getCompatDrawable(R.drawable.ic_launcher))
-                }
-            }
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-                val remoteViews = RemoteViews(PackageUtil.getPackageName(), R.layout.layout_in_broadcast_notification).apply {
-                    setImageViewBitmap(R.id.iv_avatar, roundedBitmap)
-                    setTextViewText(R.id.tv_title, title)
-                    setTextViewText(R.id.tv_content, content)
-                }
-                val bigRemoteViews = RemoteViews(PackageUtil.getPackageName(), R.layout.layout_in_broadcast_notification_big).apply {
-                    setImageViewBitmap(R.id.iv_avatar, roundedBitmap)
-                    setTextViewText(R.id.tv_title, title)
-                    setTextViewText(R.id.tv_content, content)
-                }
-                builder.setStyle(NotificationCompat.DecoratedCustomViewStyle())
-                    .setCustomContentView(remoteViews)
-                    .setCustomBigContentView(bigRemoteViews)
-                    .setGroup(group)
-            } else {
-                builder.setLargeIcon(roundedBitmap)
-            }
-            NotificationManagerCompat.from(AppUtil.appContext).notify(notifyId, builder.build())
-        }
-    }
-
-    fun cancelNotification(notifyId: Int) {
-        NotificationManagerCompat.from(AppUtil.appContext).cancel(notifyId)
-    }
-
-    private fun needHandleNotification(messageType: Long): Boolean {
-        return messageType == PushMessageType.CALL_MATCH_RESULT.type || messageType == PushMessageType.CALL_MATCH_ASK.type
-    }
-
-    private fun handleNotification(pushMessage: JiehePushMessage) {
-        when(pushMessage.messageType) {
-            // TODO: 封装通知能力, 做成类似socket的功能
-//            PushMessageType.CALL_MATCH_ASK.type -> {
-//                val data = gson.fromJson(pushMessage.pushContent, CallMatchReqAsk::class.java)
-//                CallModule.getMatchNotificationView(AppUtil.appContext)?.showNotifyView(data.userInfo, data.matchTimeout, data.matchId)
-//            }
-//            PushMessageType.CALL_MATCH_RESULT.type -> {
-//                val data = gson.fromJson(pushMessage.pushContent, CallMatchResultNotify::class.java)
-//                if (data.matchResult == MatchResult.CANCEL.value || data.matchResult == MatchResult.FAILED.value || (data.matchResult == MatchResult.SUCCESS.value && data.peerUid != ProfileModule.getMyUid())) {
-//                    CallModule.getMatchNotificationView(AppUtil.appContext)?.cancelNotifyView()
-//                }
-//            }
-            else -> {
-                //NTD
-            }
-        }
-    }
-
-    private fun showNormalNotification(pushMessage: JiehePushMessage) {
-        val notifyId = pushMessage.pushId.toInt()
-        val resultPendingIntent = PendingIntent.getActivity(
-            AppUtil.appContext,
-            notifyId,
-            forwardIntent(pushMessage),
-            PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
-        )
-        val title = pushMessage.pushTitle ?: getCompatString(R.string.app_name)
-        val content = pushMessage.pushContent ?: ""
-        val largeIcon = BitmapFactory.decodeResource(AppUtil.appContext.resources, R.drawable.ic_launcher)
-        val builder = NotificationCompat.Builder(AppUtil.appContext, pushMessage.channelId)
-            .setSmallIcon(getNotificationSmallIcon())
-            .setLargeIcon(largeIcon)
-            .setContentTitle(title)
-            .setContentText(content)
-            .setColor(getCompatColor(APP_R.color.color_app_main))
-            .setContentIntent(resultPendingIntent)
-            .setPriority(NotificationCompat.PRIORITY_MAX)
-            .setAutoCancel(true)
-            .setTicker(content)
-            .setDefaults(Notification.DEFAULT_ALL)
-        NotificationManagerCompat.from(AppUtil.appContext).notify(notifyId, builder.build())
-    }
 
     private fun getNotificationSmallIcon(): Int {
         return if (Build.VERSION.SDK_INT < 21) {

+ 0 - 48
app/src/main/java/com/adealink/weparty/push/PushMessageManager.kt

@@ -1,48 +0,0 @@
-package com.adealink.weparty.push
-
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.coroutine.dispatcher.Dispatcher
-import com.adealink.frame.data.json.froJsonErrorNull
-import com.adealink.frame.log.data.NotifyLogType
-import com.adealink.frame.log.data.ReportLogReason
-import com.adealink.frame.push.data.PushMessage
-import com.adealink.frame.util.AppUtil
-import com.adealink.weparty.App
-import com.adealink.weparty.R
-import com.adealink.weparty.push.data.JiehePushMessage
-import com.adealink.weparty.push.data.PushMessageType
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.launch
-
-object PushMessageManager {
-    fun processPushMessage(pushMessage: PushMessage) {
-        if (pushMessage.messageType == PushMessageType.UPLOAD_USER_LOG.type) {
-            CoroutineScope(Dispatcher.WENEXT_THREAD_POOL).launch {
-                App.instance.logService.uploadLog(
-                    ReportLogReason.Notify(
-                        NotifyLogType.PUSH,
-                        froJsonErrorNull(pushMessage.pushContent)
-                    )
-                )
-            }
-            return
-        }
-        PushStatEvent(PushStatEvent.Action.RECEIVE).apply {
-            type to "${pushMessage.messageType}"
-            pushId to "${pushMessage.pushId}"
-            content to "${pushMessage.pushContent}"
-        }.send()
-        if (!AppUtil.background) {
-            PushStatEvent(PushStatEvent.Action.IGNORE).apply {
-                type to "${pushMessage.messageType}"
-                pushId to "${pushMessage.pushId}"
-            }.send()
-        } else {
-            PushStatEvent(PushStatEvent.Action.SHOW).apply {
-                type to "${pushMessage.messageType}"
-                pushId to "${pushMessage.pushId}"
-            }.send()
-            NotificationUtil.showNotification(JiehePushMessage(pushMessage, getCompatString(R.string.channel_event)))
-        }
-    }
-}

+ 0 - 28
app/src/main/java/com/adealink/weparty/push/PushServiceConfig.kt

@@ -1,28 +0,0 @@
-package com.adealink.weparty.push
-
-import com.adealink.frame.log.Log
-import com.adealink.frame.network.INetworkService
-import com.adealink.frame.push.IPushServiceConfig
-import com.adealink.frame.push.data.PushMessage
-import com.adealink.frame.push.data.TAG_PUSH
-import com.adealink.weparty.App
-import com.adealink.weparty.module.account.AccountModule
-
-class PushServiceConfig : IPushServiceConfig {
-    override fun getNetworkService(): INetworkService {
-        return App.instance.networkService
-    }
-
-    override fun onReceivedPushMessage(pushMessage: PushMessage) {
-        PushMessageManager.processPushMessage(pushMessage)
-        Log.d(TAG_PUSH, "PushServiceConfig, onReceivedPushMessage:$pushMessage")
-    }
-
-    override fun isLogin(): Boolean {
-        return AccountModule.isLogin()
-    }
-
-    override fun onNewToken(token: String) {
-//        AttributionModule.updateServerUninstallToken(token)
-    }
-}

+ 0 - 25
app/src/main/java/com/adealink/weparty/push/PushStatEvent.kt

@@ -1,25 +0,0 @@
-package com.adealink.weparty.push
-
-import com.adealink.frame.statistics.BaseStatEvent
-import com.adealink.frame.statistics.CommonEventKey
-import com.adealink.frame.statistics.IEventValue
-
-class PushStatEvent(override val action: IEventValue) : BaseStatEvent("push") {
-    enum class Action(override val value: String, override val desc: String) : IEventValue {
-        CLICK("click", "点击"),
-        SHOW("show", "展示"),
-        IGNORE("ignore", "忽略"),
-
-        SWITCH("switch", "系统通知的push开关"),
-        RECEIVE("receive","收到push")
-    }
-
-    val type = Param(CommonEventKey.TYPE)
-    val pushId = Param(CommonEventKey.PUSH_ID)
-    val source = Param(CommonEventKey.SOURCE)
-
-    val switch = Param(CommonEventKey.SWITCH)
-
-    val deeplink = Param("deeplink")
-    val content = Param(CommonEventKey.CONTENT)
-}

+ 0 - 5
app/src/main/java/com/adealink/weparty/push/data/Constants.kt

@@ -1,5 +0,0 @@
-package com.adealink.weparty.push.data
-
-const val KEY_LARGE_ICON_URL = "large_icon_url"
-const val KEY_TARGET_ID = "target_id"
-const val KEY_MESSAGE_ID = "message_id"

+ 0 - 94
app/src/main/java/com/adealink/weparty/push/data/PushData.kt

@@ -1,94 +0,0 @@
-package com.adealink.weparty.push.data
-
-import android.text.Spannable
-import com.adealink.frame.push.data.KEY_PUSH_DEEPLINK
-import com.adealink.frame.push.data.KEY_PUSH_ID
-import com.adealink.frame.push.data.KEY_PUSH_MESSAGE
-import com.adealink.frame.push.data.KEY_PUSH_MESSAGE_TYPE
-import com.adealink.frame.push.data.KEY_PUSH_TITLE
-import com.adealink.frame.push.data.PushMessage
-import com.adealink.weparty.module.profile.data.UserInfo
-import com.google.gson.annotations.GsonNullable
-import com.google.gson.annotations.SerializedName
-
-enum class PushMessageType(val type: Long) {
-    UPLOAD_USER_LOG(-2), //上传用户日志
-    ACTIVITY(5), //自建活动
-    IM(40), //1v1会话提示
-    SEND_GIFT(41), //送礼提示
-    INTIMACY_ONLINE(44), //亲密度上线提醒
-    INCOME_IM(45), //1v1付费消息
-    CALL_MATCH_ASK(58), //匹配邀请
-    CALL_MATCH_RESULT(62), //匹配结果通知
-}
-
-/**
- * 端内通知条消息
- */
-data class NotificationMessage(
-    @SerializedName(KEY_PUSH_ID)
-    val pushId: Long,
-    @SerializedName(KEY_PUSH_MESSAGE_TYPE)
-    val messageType: Long,
-    @GsonNullable
-    @SerializedName(KEY_PUSH_TITLE)
-    val title: String?,
-    @GsonNullable
-    @SerializedName(KEY_PUSH_MESSAGE)
-    val message: String?,
-    @GsonNullable
-    @SerializedName(KEY_TARGET_ID)
-    val targetId: String?,
-    @GsonNullable
-    @SerializedName(KEY_LARGE_ICON_URL)
-    var largeIconUrl: String?,
-    @GsonNullable
-    @SerializedName(KEY_PUSH_DEEPLINK)
-    val deeplink: String?,
-) {
-    @GsonNullable
-    var messageSummary: Spannable? = null
-    @GsonNullable
-    var btnText: String? = null
-    @GsonNullable
-    var targetUserInfo: UserInfo? = null
-    @GsonNullable
-    var messageId: Int? = null
-
-    fun toPushMessage(): PushMessage {
-        val paramMap = hashMapOf(
-            KEY_TARGET_ID to (targetId ?: ""),
-            KEY_LARGE_ICON_URL to (largeIconUrl ?: ""),
-            KEY_MESSAGE_ID to (messageId?.toString() ?: "")
-        )
-        return PushMessage(pushId, messageType, title, message, btnText, deeplink, paramMap)
-    }
-}
-
-class JiehePushMessage(pushMessage: PushMessage, val channelId: String) {
-    var pushId: Long = pushMessage.pushId
-    var messageType: Long = pushMessage.messageType
-    var pushTitle: String? = null
-    var pushContent: String? = null
-    var deeplink: String? = null
-    var paramMap: Map<String, String>? = null
-
-    init {
-        pushTitle = pushMessage.pushTitle
-        pushContent = pushMessage.pushContent
-        deeplink = pushMessage.deeplink
-        paramMap = pushMessage.paramMap
-    }
-
-    fun getLargeIconUrl(): String? {
-        return paramMap?.get(KEY_LARGE_ICON_URL)
-    }
-
-    fun getTargetId(): String? {
-        return paramMap?.get(KEY_TARGET_ID)
-    }
-
-    fun getMessageId(): String? {
-        return paramMap?.get(KEY_MESSAGE_ID)
-    }
-}

+ 4 - 6
app/src/main/java/com/adealink/weparty/ui/MainStartUpFragment.kt

@@ -8,7 +8,6 @@ import com.adealink.frame.aab.AAB
 import com.adealink.frame.base.fastLazy
 import com.adealink.frame.coroutine.dispatcher.Dispatcher
 import com.adealink.frame.log.Log
-import com.adealink.frame.push.manager.pushService
 import com.adealink.frame.statistics.BaseStatEvent
 import com.adealink.frame.util.safeToLong
 import com.adealink.weparty.App
@@ -22,7 +21,6 @@ import com.adealink.weparty.module.account.AccountModule
 import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.setting.SettingModule
 import com.adealink.weparty.module.wallet.WalletModule
-import com.adealink.weparty.push.PushStatEvent
 import com.google.firebase.crashlytics.ktx.crashlytics
 import com.google.firebase.crashlytics.ktx.setCustomKeys
 import com.google.firebase.ktx.Firebase
@@ -87,7 +85,7 @@ class MainStartUpFragment : BaseFragment() {
             AccountModule.checkRemoteVirtualAppConfig()
 //            AttributionModule.reportAttributionData()
             BaseStatEvent.setUserId(ProfileModule.getMyUid().safeToLong())
-            pushService.getPushTokenAndReport()
+//            pushService.getPushTokenAndReport()
             Firebase.crashlytics.setCustomKeys {
                 key("uid", AccountModule.uid)
                 key("BuildType", BuildConfig.BUILD_TYPE)
@@ -149,9 +147,9 @@ class MainStartUpFragment : BaseFragment() {
         val activity = activity ?: return
         val manager: NotificationManagerCompat = NotificationManagerCompat.from(activity)
         val isOpen = manager.areNotificationsEnabled()
-        PushStatEvent(PushStatEvent.Action.SWITCH).apply {
-            switch to if (isOpen) 1 else 0
-        }.send()
+//        PushStatEvent(PushStatEvent.Action.SWITCH).apply {
+//            switch to if (isOpen) 1 else 0
+//        }.send()
     }
 
     override fun onActivityCreated(savedInstanceState: Bundle?) {

BIN
app/src/main/res/drawable-xhdpi/notification_ic.png


BIN
app/src/main/res/drawable-xhdpi/notification_ic.webp


+ 3 - 1
gradle/libs.versions.toml

@@ -159,6 +159,8 @@ tiktok = "2.3.0"
 # frame
 frameBom = "6.2.7"
 
+framePush = "6.0.1"
+
 frameRouterCompiler = "6.0.0"
 frameTrace = "1.0.0"
 frameBundleTool = "1.0.0"
@@ -412,7 +414,7 @@ frame-media = { group = "com.wenext.android", name = "frame-media" }
 frame-agorartc = { group = "com.wenext.android", name = "frame-agorartc" }
 frame-trtc = { group = "com.wenext.android", name = "frame-trtc" }
 frame-trtc-pro = { group = "com.wenext.android", name = "frame-trtc-pro" }
-frame-push = { group = "com.wenext.android", name = "frame-push" }
+frame-push = { group = "com.wenext.android", name = "frame-push", version.ref="framePush" }
 #frame-room = { group = "com.wenext.android", name = "frame-room" }
 frame-tceffect = { group = "com.wenext.android", name = "frame-tceffect" }
 frame-share = { group = "com.wenext.android", name = "frame-share" }

+ 0 - 2
module/im/build.gradle

@@ -55,8 +55,6 @@ dependencies {
     implementation project(":tuicommunity")
     implementation project(":tuicustomerserviceplugin")
     //implementation project(":tuiroomkit")
-    implementation libs.tencent.timpush
-    implementation libs.tencent.timpush.fcm
 
     //test
     testImplementation libs.junit

+ 11 - 0
module/im/src/main/java/com/adealink/weparty/im/IMServiceImpl.kt

@@ -1,9 +1,11 @@
 package com.adealink.weparty.im
 
 import android.app.Application
+import com.adealink.frame.log.Log
 import com.adealink.frame.spi.RegisterService
 import com.adealink.weparty.im.constant.OFFICIAL_IMAGE_TEXT_BUSINESS_ID
 import com.adealink.weparty.im.constant.PLAYMATE_ORDER_BUSINESS_ID
+import com.adealink.weparty.im.constant.TAG_IM_PUSH
 import com.adealink.weparty.im.manager.login.imLoginManager
 import com.adealink.weparty.im.manager.session.sessionManager
 import com.adealink.weparty.im.service.TIMAppService
@@ -11,6 +13,8 @@ import com.adealink.weparty.im.session.mesasge.CustomMessageViewHolder
 import com.adealink.weparty.im.session.mesasge.OfficialImageTextMessageBean
 import com.adealink.weparty.im.session.mesasge.PlaymateOrderMessageBean
 import com.adealink.weparty.module.im.IIMService
+import com.tencent.qcloud.tim.push.TIMPushListener
+import com.tencent.qcloud.tim.push.TIMPushManager
 import com.tencent.qcloud.tuikit.tuichat.config.TUIChatConfigs
 import com.tencent.qcloud.tuikit.tuicontact.config.TUIContactConfig
 import com.tencent.qcloud.tuikit.tuiconversation.config.TUIConversationConfig
@@ -44,6 +48,13 @@ class IMServiceImpl : IIMService {
         //开启已读回执
         TUIChatConfigs.getGeneralConfig().isMsgNeedReadReceipt = true
 
+        //离线Push设置
+        TIMPushManager.getInstance().addPushListener(object : TIMPushListener() {
+            override fun onNotificationClicked(ext: String?) {
+                Log.i(TAG_IM_PUSH, "onNotificationClicked:$ext")
+            }
+        })
+
         imLoginManager.init(application)
         sessionManager.init(application)
         TIMAppService().init(application)

+ 3 - 1
module/im/src/main/java/com/adealink/weparty/im/constant/Tags.kt

@@ -3,4 +3,6 @@ package com.adealink.weparty.im.constant
 const val TAG_IM = "tag_im"
 
 const val TAG_IM_LOGIN = "${TAG_IM}_login"
-const val TAG_IM_FLOW = "${TAG_IM}_flow"
+const val TAG_IM_FLOW = "${TAG_IM}_flow"
+
+const val TAG_IM_PUSH = "${TAG_IM}_push"

+ 1 - 1
module/im/src/main/java/com/adealink/weparty/im/session/adapter/viewbinder/SoundMessageViewBinder.kt

@@ -275,7 +275,7 @@ class SoundMessageViewHolder(
             startPlayAnimation(
                 binding,
                 message.duration * 1000L,
-                AudioPlayer.getInstance().playPosition,
+                AudioPlayer.getInstance().playPosition.toLong(),
                 nextSpeed
             )
         }