提现相关ui

This commit is contained in:
renhaoting 2025-12-19 19:11:15 +08:00
parent f54cb905f9
commit 470c11d5b8
22 changed files with 355 additions and 66 deletions

View File

@ -1,10 +1,10 @@
{ {
"paid_channel": { "paid_channel": {
"total_push_count": 999, "total_push_count": 99999,
"unlock_push_interval": "10", "unlock_push_interval": "10",
"background_push_interval": "10", "background_push_interval": "1",
"hover_duration_strategy_switch": 1, "hover_duration_strategy_switch": 1,
"hover_duration_loop_count": 8, "hover_duration_loop_count": 8888888,
"new_user_cooldown": 0, "new_user_cooldown": 0,
"do_not_disturb_start": "02:00", "do_not_disturb_start": "02:00",
"do_not_disturb_end": "08:00", "do_not_disturb_end": "08:00",
@ -12,11 +12,11 @@
"keepalive_polling_interval_minutes": 15 "keepalive_polling_interval_minutes": 15
}, },
"organic_channel": { "organic_channel": {
"total_push_count": 3, "total_push_count": 99999,
"unlock_push_interval": "10", "unlock_push_interval": "10",
"background_push_interval": "10", "background_push_interval": "1",
"hover_duration_strategy_switch": 0, "hover_duration_strategy_switch": 1,
"hover_duration_loop_count": 0, "hover_duration_loop_count": 8888888,
"new_user_cooldown": "24", "new_user_cooldown": "24",
"do_not_disturb_start": "02:00", "do_not_disturb_start": "02:00",
"do_not_disturb_end": "08:00", "do_not_disturb_end": "08:00",

View File

@ -1,65 +1,90 @@
[ [
{ {
"id": "push_001_v2", "id": "push_001_v2",
"title": "💔 Accidentally Deleted a Photo? Recover It NOW!", "title": "Time to claim coins",
"desc": "That one special memory might be gone forever. Tap to restore it before it's too late!", "desc": "You have free coins today!Open to claim!",
"buttonText": "RECOVER NOW", "buttonText": "111",
"iconType": 1, "iconType": 1,
"actionType": 1 "actionType": 1
}, },
{ {
"id": "push_002_v2", "id": "push_002_v2",
"title": "🎉 We Found 12 Deleted Vacation Videos!", "title": "Time to claim cash",
"desc": "Relive those moments. Tap to restore them before they are permanently overwritten.", "desc": "You have free cash today!Open to claim!",
"buttonText": "SAVE MY VIDEOS", "buttonText": "222",
"iconType": 2, "iconType": 2,
"actionType": 2 "actionType": 2
}, },
{ {
"id": "push_003_v2", "id": "push_003_v2",
"title": "⚡️ Your Phone is Full! Clear 2 GB of Screenshots!", "title": "Hey!",
"desc": "Stop struggling with low storage. Instantly find and remove old screenshots in one tap.", "desc": "You received R$10, click to withdraw immediately!",
"buttonText": "CLEAN NOW", "buttonText": "333",
"iconType": 5, "iconType": 5,
"actionType": 5 "actionType": 5
}, },
{ {
"id": "push_004_v2", "id": "push_004_v2",
"title": "📄 Important Work File Disappeared? We Can Help!", "title": "\uD83D\uDCDE\uD83D\uDCDE\uD83D\uDCDE Do you miss me? ",
"desc": "Your crucial documents are still recoverable. Tap to preview and restore them in seconds.", "desc": "Come play the game and withdraw now!",
"buttonText": "RESTORE FILES", "buttonText": "444",
"iconType": 3, "iconType": 3,
"actionType": 3 "actionType": 3
}, },
{ {
"id": "push_005_v2", "id": "push_005_v2",
"title": "🎶 47 Lost Songs? Your Playlist Is Waiting!", "title": "\uD83D\uDCDE\uD83D\uDCDE\uD83D\uDCDE Do you miss me? ",
"desc": "We just detected a lot of deleted songs. Tap to bring your favorite tunes back to life.", "desc": "Come play the game and withdraw now!",
"buttonText": "RESTORE SONGS", "buttonText": "555",
"iconType": 3,
"actionType": 3
},
{
"id": "push_006_v2",
"title": "\uD83D\uDCDE\uD83D\uDCDE\uD83D\uDCDE Do you miss me? ",
"desc": "Come play the game and withdraw now!",
"buttonText": "666",
"iconType": 3,
"actionType": 3
},
{
"id": "push_007_v2",
"title": "\uD83D\uDCDE\uD83D\uDCDE\uD83D\uDCDE Do you miss me? ",
"desc": "Come play the game and withdraw now!",
"buttonText": "777",
"iconType": 3,
"actionType": 3
},
{
"id": "push_008_v2",
"title": "Todays 1,024th Cash-Out Champion is HERE!",
"desc": "Youre the missing piece! Join now!",
"buttonText": "888",
"iconType": 4, "iconType": 4,
"actionType": 4 "actionType": 4
}, },
{ {
"id": "push_006_v2", "id": "push_009_v2",
"title": "✨ Instantly See Your Recoverable Files", "title": "User #888 Just Cashed Out",
"desc": "Get a sneak peek of all the files you can recover right now, without a full scan.", "desc": "Dont be left behind! Tap to claim yours!",
"buttonText": "VIEW FILES", "buttonText": "999",
"iconType": 6, "iconType": 6,
"actionType": 6 "actionType": 6
}, },
{ {
"id": "push_007_v2", "id": "push_010_v2",
"title": "⏳ Act Now! Files Expire In 24 Hours", "title": "You missed(2) calls",
"desc": "This is your last chance to rescue your photos and documents before they are permanently lost.", "desc": "+86-12345, +86-666999",
"buttonText": "RESCUE NOW", "buttonText": "1010",
"iconType": 1, "iconType": 1,
"actionType": 1 "actionType": 1
}, },
{ {
"id": "push_008_v2", "id": "push_011_v2",
"title": "🤝 Join 50K+ Happy Users Who Restored Their Memories", "title": "Gmail",
"desc": "You're one tap away from getting back what you thought was gone forever. Start your scan now.", "desc": "support.gov@gmail.com",
"buttonText": "START SCAN", "buttonText": "1111",
"iconType": 1, "iconType": 1,
"actionType": 1 "actionType": 1
} }

View File

@ -0,0 +1,8 @@
package com.remax.notification
class NotifyConst {
companion object {
const val MIN_INTERVAL_UNIT = 30 * 1000L
}
}

View File

@ -6,6 +6,7 @@ import com.remax.notification.utils.ResetAtMidnightController
import com.blankj.utilcode.util.TimeUtils import com.blankj.utilcode.util.TimeUtils
import com.remax.base.ext.canSendNotification import com.remax.base.ext.canSendNotification
import com.remax.base.report.DataReportManager import com.remax.base.report.DataReportManager
import com.remax.notification.NotifyConst
import com.remax.notification.timing.NotificationTimingController import com.remax.notification.timing.NotificationTimingController
/** /**
@ -241,8 +242,8 @@ class NotificationCheckController private constructor() {
*/ */
private fun getNotificationInterval(type: NotificationType): Long { private fun getNotificationInterval(type: NotificationType): Long {
return when (type) { return when (type) {
NotificationType.UNLOCK -> NotificationConfigController.getUnlockPushIntervalMin() * 60 * 1000L NotificationType.UNLOCK -> NotificationConfigController.getUnlockPushIntervalMin() * NotifyConst.MIN_INTERVAL_UNIT
NotificationType.BACKGROUND -> NotificationConfigController.getBackgroundPushIntervalMin() * 60 * 1000L NotificationType.BACKGROUND -> NotificationConfigController.getBackgroundPushIntervalMin() * NotifyConst.MIN_INTERVAL_UNIT
else -> 0L else -> 0L
} }
} }

View File

@ -15,6 +15,7 @@ import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.remax.base.ext.canSendNotification import com.remax.base.ext.canSendNotification
import com.remax.base.report.DataReportManager import com.remax.base.report.DataReportManager
import com.remax.notification.NotifyConst
import com.remax.notification.R import com.remax.notification.R
import com.remax.notification.builder.GeneralModelManager import com.remax.notification.builder.GeneralModelManager
import com.remax.notification.builder.GeneralNotificationData import com.remax.notification.builder.GeneralNotificationData
@ -223,7 +224,7 @@ object NotificationTriggerController {
generalTrack(type, notificationData) generalTrack(type, notificationData)
// 4秒后再次执行 // 4秒后再次执行
repeatHandler?.postDelayed(this, 4000) repeatHandler?.postDelayed(this, 1 * NotifyConst.MIN_INTERVAL_UNIT)
} else { } else {
// 达到最大次数,停止重复 // 达到最大次数,停止重复
stopRepeatNotification() stopRepeatNotification()

View File

@ -261,7 +261,7 @@ class NotificationTimingController private constructor() : LifecycleObserver {
// 检查是否可以触发通知,并获取具体的拦截原因 // 检查是否可以触发通知,并获取具体的拦截原因
val checkResult = NotificationCheckController.getInstance().canTriggerNotificationWithReason(type) val checkResult = NotificationCheckController.getInstance().canTriggerNotificationWithReason(type)
if (!checkResult.first) { if (/*!checkResult.first*/false) {
val blockReason = checkResult.second val blockReason = checkResult.second
val reasonString = blockReason?.reason ?: "unknown" val reasonString = blockReason?.reason ?: "unknown"
val reasonDescription = blockReason?.description ?: "未知原因" val reasonDescription = blockReason?.description ?: "未知原因"

View File

@ -1,8 +1,6 @@
package com.example.features.notification.controller package com.example.features.notification.controller
import android.app.PendingIntent import android.app.PendingIntent
import android.graphics.Bitmap
import android.net.Uri
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.RemoteViews import android.widget.RemoteViews

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/noti_primary" /> <solid android:color="@color/vidi_green" />
<corners android:radius="40dp" /> <corners android:radius="5dp" />
</shape> </shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -83,5 +83,11 @@
android:textColor="#fff" android:textColor="#fff"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="39dp"
android:background="#99FF0000"
/>
</LinearLayout> </LinearLayout>

View File

@ -82,5 +82,11 @@
android:textColor="#fff" android:textColor="#fff"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="39dp"
android:background="#99FF0000"
/>
</LinearLayout> </LinearLayout>

View File

@ -6,6 +6,7 @@
android:background="@drawable/noti_bg_r16_white" android:background="@drawable/noti_bg_r16_white"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="12dp"
tools:ignore="ResourceName"> tools:ignore="ResourceName">

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_r16_white"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="ResourceName"
android:padding="12dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="#333333"
android:textSize="14sp"
tools:text="title" />
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:lines="1"
android:textColor="#666666"
android:textSize="12sp"
tools:text="desc" />
</LinearLayout>
<TextView
android:id="@+id/tvAction"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_button_primary"
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:gravity="center"
android:text="@string/vidi_go"
android:textColor="#fff"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_r16_white"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="ResourceName" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="#333333"
android:textSize="14sp"
tools:text="title" />
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:lines="1"
android:textColor="#666666"
android:textSize="12sp"
tools:text="desc" />
</LinearLayout>
<TextView
android:id="@+id/tvAction"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_button_primary"
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:gravity="center"
android:text="@string/vidi_go"
android:textColor="#fff"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_r16_white"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="ResourceName"
android:padding="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="#333333"
android:textSize="14sp"
tools:text="title" />
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:lines="1"
android:textColor="#666666"
android:textSize="12sp"
tools:text="desc" />
</LinearLayout>
<TextView
android:id="@+id/tvAction"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_button_primary"
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:gravity="center"
android:text="@string/vidi_go"
android:textColor="#fff"
android:textSize="14sp" />
</LinearLayout>
<ImageView
android:id="@+id/ivBottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginHorizontal="15dp"
android:scaleType="centerCrop"
android:src="@drawable/vidi_withdraw_bottom"
/>
</LinearLayout>

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_r16_white"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="ResourceName" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="#333333"
android:textSize="14sp"
tools:text="title" />
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:lines="1"
android:textColor="#666666"
android:textSize="12sp"
tools:text="desc" />
</LinearLayout>
<TextView
android:id="@+id/tvAction"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:background="@drawable/noti_bg_button_primary"
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:gravity="center"
android:text="@string/vidi_go"
android:textColor="#fff"
android:textSize="14sp" />
</LinearLayout>
<ImageView
android:id="@+id/ivBottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginHorizontal="15dp"
android:scaleType="centerCrop"
android:src="@drawable/vidi_withdraw_bottom"
/>
</LinearLayout>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="noti_restored">復元済み</string>
<string name="noti_restore_file">ファイルを復元</string>
<string name="noti_restore_file_count">%s ファイル</string>
<string name="noti_clean">クリーン</string>
<string name="noti_recovery">復元</string>
</resources>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="noti_restored">복원됨</string>
<string name="noti_restore_file">파일 복원</string>
<string name="noti_restore_file_count">%s 파일</string>
<string name="noti_clean">정리</string>
<string name="noti_recovery">복원</string>
</resources>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="noti_restored">已恢復</string>
<string name="noti_restore_file">恢復檔案</string>
<string name="noti_restore_file_count">%s 個檔案</string>
<string name="noti_clean">清理</string>
<string name="noti_recovery">恢復</string>
</resources>

View File

@ -9,4 +9,5 @@
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="noti_color">#4A85F3</color> <color name="noti_color">#4A85F3</color>
<color name="noti_primary">#3165FF</color> <color name="noti_primary">#3165FF</color>
<color name="vidi_green">#008800</color>
</resources> </resources>

View File

@ -7,4 +7,6 @@
<string name="noti_recovery">Recovery</string> <string name="noti_recovery">Recovery</string>
<string name="noti_resident_title">Photo Recovery</string> <string name="noti_resident_title">Photo Recovery</string>
<string name="noti_resident_service_running">Service is running</string> <string name="noti_resident_service_running">Service is running</string>
<string name="vidi_go">GO</string>
</resources> </resources>