From 10208fada87487f0f0817a5a6c07cc85de4a686b Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 12 Mar 2025 03:08:12 +0900 Subject: [PATCH] =?UTF-8?q?Notifly=20=EA=B8=B0=EB=B3=B8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 9 ++++++ .../co/vividnext/sodalive/app/SodaLiveApp.kt | 12 ++++++++ .../vividnext/sodalive/main/MainActivity.kt | 2 +- .../vividnext/sodalive/main/MainViewModel.kt | 28 ++++++++++++++++++- .../notification/GetMemberInfoResponse.kt | 3 ++ .../sodalive/tracking/NotiflyClient.kt | 11 ++++++++ 6 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/tracking/NotiflyClient.kt diff --git a/app/build.gradle b/app/build.gradle index 57b2969..3c486d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,6 +49,9 @@ android { buildConfigField 'String', 'BOOTPAY_APP_HECTO_ID', '"664c1707b18b225deca4b429"' buildConfigField 'String', 'AGORA_APP_ID', '"e34e40046e9847baba3adfe2b8ffb4f6"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"15cadeea4ba94ff7b091c9a10f4bf4a6"' + buildConfigField 'String', 'NOTIFLY_PROJECT_ID', '"765102ec85855aa680da35f1b0f55712"' + buildConfigField 'String', 'NOTIFLY_USERNAME', '"voiceon"' + buildConfigField 'String', 'NOTIFLY_PASSWORD', '"c6c585db0aaa4189be44d0467c7d66b6@A"' manifestPlaceholders = [ URISCHEME : "voiceon", APPLINK_HOST : "voiceon.onelink.me", @@ -68,6 +71,9 @@ android { buildConfigField 'String', 'BOOTPAY_APP_HECTO_ID', '"667fca5d3bab7404f831c3e4"' buildConfigField 'String', 'AGORA_APP_ID', '"b96574e191a9430fa54c605528aa3ef7"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"ae18ade3afcf4086bd4397726eb0654c"' + buildConfigField 'String', 'NOTIFLY_PROJECT_ID', '"5f7ebe90d1ce5f0392164b8a53a662bc"' + buildConfigField 'String', 'NOTIFLY_USERNAME', '"voiceon"' + buildConfigField 'String', 'NOTIFLY_PASSWORD', '"c6c585db0aaa4189be44d0467c7d66b6@A"' manifestPlaceholders = [ URISCHEME : "voiceon-test", APPLINK_HOST : "voiceon-test.onelink.me", @@ -182,4 +188,7 @@ dependencies { // Appsflyer implementation 'com.appsflyer:af-android-sdk:6.16.1' + + // 노티플라이 + implementation 'com.github.team-michael:notifly-android-sdk:1.12.0' } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt index 1d65234..a0061f2 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt @@ -15,6 +15,7 @@ import kr.co.vividnext.sodalive.common.ImageLoaderProvider import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.di.AppDI import kr.co.vividnext.sodalive.tracking.FirebaseTracking +import tech.notifly.Notifly class SodaLiveApp : Application() { override fun onCreate() { @@ -37,6 +38,8 @@ class SodaLiveApp : Application() { FacebookSdk.fullyInitialize() setupAppsFlyer() + + setupNotifly() } private fun isDebuggable(): Boolean { @@ -106,4 +109,13 @@ class SodaLiveApp : Application() { private fun logUtmInFirebase() { FirebaseTracking.logUtm() } + + private fun setupNotifly() { + Notifly.initialize( + applicationContext, + BuildConfig.NOTIFLY_PROJECT_ID, + BuildConfig.NOTIFLY_USERNAME, + BuildConfig.NOTIFLY_PASSWORD, + ) + } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt index d849e3b..d9711e4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/main/MainActivity.kt @@ -565,7 +565,7 @@ class MainActivity : BaseActivity(ActivityMainBinding::infl } private fun getMemberInfo() { - viewModel.getMemberInfo { + viewModel.getMemberInfo(context = applicationContext) { notificationSettingsDialog.show(screenWidth) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/main/MainViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/main/MainViewModel.kt index e61f654..77eaa7d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/main/MainViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/main/MainViewModel.kt @@ -16,7 +16,11 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.settings.event.EventItem import kr.co.vividnext.sodalive.settings.event.EventRepository import kr.co.vividnext.sodalive.settings.notification.UpdateNotificationSettingRequest +import kr.co.vividnext.sodalive.tracking.NotiflyClient import kr.co.vividnext.sodalive.user.UserRepository +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale import java.util.concurrent.Executors class MainViewModel( @@ -86,7 +90,7 @@ class MainViewModel( ) } - fun getMemberInfo(showNotificationSettingsDialog: () -> Unit) { + fun getMemberInfo(context: Context, showNotificationSettingsDialog: () -> Unit) { compositeDisposable.add( userRepository.getMemberInfo(token = "Bearer ${SharedPreferenceManager.token}") .subscribeOn(Schedulers.io()) @@ -107,6 +111,28 @@ class MainViewModel( ) { showNotificationSettingsDialog() } + + val dateFormat = SimpleDateFormat( + "yyyy-MM-dd, HH:mm:ss", + Locale.getDefault() + ) + val lastActiveDate = dateFormat.format(Date()) + + val params = mutableMapOf( + "nickname" to SharedPreferenceManager.nickname, + "last_active_date" to lastActiveDate, + "charge_count" to data.chargeCount, + "signup_date" to data.signupDate, + "is_auth" to data.isAuth, + "gender" to data.gender, + "can" to data.can + ) + + NotiflyClient.setUser( + context = context, + userId = SharedPreferenceManager.userId, + params = params + ) } }, {} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponse.kt index 5d639a1..9b9425f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/settings/notification/GetMemberInfoResponse.kt @@ -7,6 +7,9 @@ import com.google.gson.annotations.SerializedName data class GetMemberInfoResponse( @SerializedName("can") val can: Int, @SerializedName("isAuth") val isAuth: Boolean, + @SerializedName("gender") val gender: String?, + @SerializedName("signupDate") val signupDate: String, + @SerializedName("chargeCount") val chargeCount: Int, @SerializedName("role") val role: MemberRole, @SerializedName("messageNotice") val messageNotice: Boolean?, @SerializedName("followingChannelLiveNotice") diff --git a/app/src/main/java/kr/co/vividnext/sodalive/tracking/NotiflyClient.kt b/app/src/main/java/kr/co/vividnext/sodalive/tracking/NotiflyClient.kt new file mode 100644 index 0000000..efe0a23 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/tracking/NotiflyClient.kt @@ -0,0 +1,11 @@ +package kr.co.vividnext.sodalive.tracking + +import android.content.Context +import tech.notifly.Notifly + +object NotiflyClient { + fun setUser(context: Context, userId: Long, params: Map) { + Notifly.setUserId(context, "voiceon_user$userId") + Notifly.setUserProperties(context, params) + } +}