캐시버튼 채널링 실행
준비 사항
채널링 연동은 영업 담당자를 통해 문의 후 연동을 진행해 주세요.
내부 설정 정보가 올바르게 입력되어야 채널링 서비스가 정상적으로 운영 됩니다.
"퍼블리셔 캐시버튼"을 사용하기 위해서는 "시작하기" → "퍼블리셔 서비스"의 기본 설정이 완료 되어야 합니다.
연동 순서
1. ChannelingUser* Data Class를 이용하여 채널링 회원 정보를 설정합니다.
2. LaunchChannelingBuilder & ChannelingUser 정보를 통해 인스턴스를 초기화 합니다.
3. 리스너로 전달된 "LaunchChannelingBuilder"를 통해 "기본형", "커스텀", "View" 형식의 버튼을 실행합니다.
3.1. 기본형(launchButton)
3.1.1. LaunchChannelingBuilder.launchButton
3.2. 플로팅 버튼형(floatingButton)
3.2.1. LaunchChannelingBuilder.launchFloating
3.3. 커스텀형(launchCustomView)
3.3.1. LaunchChannelingBuilder.launchCustomView
3.4. View(lauchView)
3.4.1. LaunchChannelingBuilder.launchView
캐시버튼 실행
LaunchChannelingBuilder()
// 채널링 회원 정보 생성
val channelingUser = ChannelingUser(userID = "회원고유ID")
// 빌더 생성
val builder = LaunchChannelingBuilder.Builder(
context = this@MainActivity,
channelingUser = channelingUser
)
builder.build(listener = object : LaunchChannelingBuilder.IBuilderListener {
override fun onSuccess(builder: LaunchChannelingBuilder) {
// 성공
// builder.launchButton or builder.launchCustomView
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onSuccess")
}
override fun onFailure(reason: String) {
// 실패
// reason: 실패 사유
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onFailure '$reason'")
}
})
ChannelingUser
회원 고유 코드(userID) 값은 필수값이며, 나머지 항목은 선택 사항 입니다.
⚠️ 앱을 삭제 후 재설치하여 회원 고유 코드(UserID) 값이 변경되거나 다른 사유로 인해 고정된 키값을 사용하지 못하는 경우 아바티 담당자에게 문의해주세요.
data class ChannelingUser(
val userID: String,
val phoneNumber: String = "",
val nickname: String = "",
val email: String = "",
val gender: UserGenderType = UserGenderType.NONE,
val birthYear: String = ""
)
userID
String
회원 고유 코드(필수)
phoneNumber
String
회원 연락처(필수)
nickname
String
회원 닉네임(필수)
String
회원 메일주소
gender
UserGenderType
MALE
FEMALE
회원 성별
birthYear
String
"1997" 문자열
LaunchChannelingBuilder.IBuilderListener
interface IBuilderListener {
// 성공 LaunchChannelingBuilder 인스턴스
fun onSuccess(builder: LaunchChannelingBuilder)
// 실패 사유
fun onFailure(reason: String)
}
기본형
버튼을 터치하면 화면 하단에서 대시보드가 노출 됩니다.
LaunchBuilder.launchButton(...)
fun launchButton(
// Android Activity
ownerActivity: Activity,
// 시작시 버튼 노출 여부(기본값 true)
useStartWithInVisible: Boolean = false,
// 버튼 옵션 정보(overlay 사용 여부 및 버튼 초기 위치)
option: ButtonOption = ButtonOption(),
// 버튼 생성 결과 리스너
listener: ILaunchButtonListener
)
// option(버튼옵션)
class ButtonOption(
// 오버레이 기능 활성화, 유저가 버튼을 원하는 위치로 이동 시킬수 있습니다.
val useOverlay: Boolean = true,
// 버튼의 초기 X축 위치값을 설정합니다.
val startPositionX: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION,
// 버튼의 초기 Y축 위치값을 설정합니다.
val startPositionY: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION
)
// listener(버튼 생성 결과 리스너)
interface ILaunchButtonListener {
// 버튼생성 실패와 함께 이유가 전달됩니다.
fun onFailure(reason: String)
// 버튼생성 성공 이벤트와 함께 캐시버튼 레이아웃이 전달됩니다.
fun onSuccess(view: CashButtonLayout?)
// 캐시버튼 레이아웃의 대시보드 이벤트가 전달됩니다. { EXPANDED / HIDDEN }
fun onDashBoardStateChange(state: CashButtonLayout.State) {}
}
class MainActivity : AppCompatActivity() {
private var cashButtonLayout: CashButtonLayout? = null
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// crate channeling user
val channelingUser = ChannelingUser(userID = "UserID")
// create LaunchChannelingBuilder
val builder = LaunchChannelingBuilder.Builder(
context = this@MainActivity,
channelingUser = channelingUser
)
// build LaunchChannelingBuilder
builder.build(listener = object : LaunchChannelingBuilder.IBuilderListener {
// success
override fun onSuccess(builder: LaunchChannelingBuilder) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onSuccess")
launchButton(builder = builder)
}
// fail
override fun onFailure(reason: String) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onFailure '$reason'")
}
})
}
// launchButton
private fun launchButton(builder: LaunchChannelingBuilder) {
builder.launchButton(
ownerActivity = this@MainActivity,
listener = object : ILaunchButtonListener {
// onSuccess
override fun onSuccess(view: CashButtonLayout?) {
Log.i("LaunchButtonBuilder", "IBuilderListener::onSuccess")
cashButtonLayout = view
}
// onFailure
override fun onFailure(reason: String) {
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onFailure '$reason'")
}
// onDashBoardStateChange
override fun onDashBoardStateChange(state: CashButtonLayout.State) {
super.onDashBoardStateChange(state)
// state: EXPANDED, HIDDEN
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onDashBoardStateChange '$state'")
}
}
)
}
}
플로팅 버튼형
플로팅 버튼을 터치하면 전체화면으로 구성된 화면이 노출됩니다.
LaunchBuilder.launchFloating()
fun launchFloating(
// Android Activity
ownerActivity: Activity,
// 버튼 옵션 정보(overlay 사용 여부 및 버튼 초기 위치)
option: ButtonOption = ButtonOption(),
// 버튼 생성 결과 리스너
listener: ILaunchFloatingListener
)
// option(버튼옵션)
class ButtonOption(
// 오버레이 기능 활성화, 유저가 버튼을 원하는 위치로 이동 시킬수 있습니다.
val useOverlay: Boolean = true,
// 버튼의 초기 X축 위치값을 설정합니다.
val startPositionX: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION,
// 버튼의 초기 Y축 위치값을 설정합니다.
val startPositionY: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION
)
// listener
interface ILaunchFloatingListener {
// 버튼생성 실패와 함께 이유가 전달됩니다.
fun onFailure(reason: String)
// 버튼생성 성공 이벤트와 함께 플로팅 버튼 객체가(레이아웃) 전달됩니다.
fun onSuccess(view: FloatingButtonLayout?)
}
class MainActivity : AppCompatActivity() {
private var floatingButtonLayout: FloatingButtonLayout? = null
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// crate channeling user
val channelingUser = ChannelingUser(userID = "UserID")
// create LaunchChannelingBuilder
val builder = LaunchChannelingBuilder.Builder(
context = this@MainActivity,
channelingUser = channelingUser
)
// build LaunchChannelingBuilder
builder.build(listener = object : LaunchChannelingBuilder.IBuilderListener {
// success
override fun onSuccess(builder: LaunchChannelingBuilder) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onSuccess")
launchFloating(builder = builder)
}
// fail
override fun onFailure(reason: String) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onFailure '$reason'")
}
})
}
// launchButton
private fun launchFloating(builder: LaunchChannelingBuilder) {
builder.launchFloating(
ownerActivity = this@MainActivity,
listener = object : ILaunchFloatingListener {
// onSuccess
override fun onSuccess(view: FloatingButtonLayout?) {
Log.i("LaunchFloatingBuilder", "IBuilderListener::onSuccess")
floatingButtonLayout = view
}
// onFailure
override fun onFailure(reason: String) {
Log.i("LaunchFloatingBuilder", "CashButtonLayout::onFailure '$reason'")
}
}
)
}
}
커스텀형
커스텀 버튼 적용 디자인 가이드
커스텀 버튼 적용 가이드
기본으로 제공되는 버튼의 형태가 아닌 원하는 형태의 View를 통해 캐시 버튼을 사용할 수 있습니다.
LaunchBuilder.launchCustomView(...)
fun launchCustomView(
// Android Activity
ownerActivity: Activity,
// 커스텀으로 사용되는 View(null 허용)
customView: View?,
// 버튼 생성 결과 리스너
listener: ILaunchCustomViewListener
)
// listener
interface ILaunchCustomViewListener {
// 버튼생성 성공 이벤트와 함께 캐시버튼 레이아웃이 전달됩니다.
fun onSuccess(view: CashButtonLayout?)
// 현재 유저가 적립가능한 버튼의 캐시정보(버튼 터치로 받을 수 있는 캐시물량)
fun onCoinUpdate(coinValue: String)
// 버튼생성 실패와 함께 이유가 전달됩니다.
fun onFailure(reason: String)
// 캐시버튼 레이아웃의 대시보드 이벤트가 전달됩니다. { EXPANDED / HIDDEN }
fun onDashBoardStateChange(state: CashButtonLayout.State) {}
}
class MainActivity : AppCompatActivity() {
private var cashButtonLayout: CashButtonLayout? = null
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// crate channeling user
val channelingUser = ChannelingUser(userID = "UserID")
// create LaunchChannelingBuilder
val builder = LaunchChannelingBuilder.Builder(
context = this@MainActivity,
channelingUser = channelingUser
)
// build LaunchChannelingBuilder
builder.build(listener = object : LaunchChannelingBuilder.IBuilderListener {
override fun onSuccess(builder: LaunchChannelingBuilder) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onSuccess")
launchButton(builder = builder)
}
override fun onFailure(reason: String) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onFailure '$reason'")
}
})
}
// launchCustomView
private fun launchCustomView(builder: LaunchChannelingBuilder) {
// launch
builder.launchCustomView(
ownerActivity = this@MainActivity,
customView = binding.launchCustom,
listener = object : ILaunchCustomViewListener {
// onSuccess
override fun onSuccess(view: CashButtonLayout?) {
cashButtonLayout = view
Log.i("ChannelBuilder", "ILaunchCustomViewListener::onSuccess")
}
// onFailure
override fun onFailure(reason: String) {
Log.i("ChannelBuilder", "ILaunchCustomViewListener::onFailure '$reason'")
}
// onCoinUpdate
override fun onCoinUpdate(coinValue: String) {
binding.launchCustom.text = "Coin $coinValue"
}
// onDashBoardStateChange
override fun onDashBoardStateChange(state: CashButtonLayout.State) {
super.onDashBoardStateChange(state)
// state: EXPANDED, HIDDEN
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onDashBoardStateChange '$state'")
}
}
)
}
}
View 호출형(직접 호출형)
특정한 View 없이 함수 호출만으로 캐시버튼의 서비스를 호출합니다.
LaunchBuilder.launchView(...)
fun launchView(
// Android Activity
ownerActivity: Activity,
// 직접 호출 결과 리스너
listener: ILaunchViewListener
)
// listener
interface ILaunchViewListener {
// 직접 호출 성공 이벤트(대시보드 또는 전체 화면 노출)
fun onSuccess()
// 직접 호출 실패
fun onFailure()
}
class MainActivity : AppCompatActivity() {
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// crate channeling user
val channelingUser = ChannelingUser(userID = "UserID")
// create LaunchChannelingBuilder
val builder = LaunchChannelingBuilder.Builder(
context = this@MainActivity,
channelingUser = channelingUser
)
// build LaunchChannelingBuilder
builder.build(listener = object : LaunchChannelingBuilder.IBuilderListener {
// success
override fun onSuccess(builder: LaunchChannelingBuilder) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onSuccess")
launchButton(builder = builder)
}
// failure
override fun onFailure(reason: String) {
Log.e("ChannelBuilder", "LaunchChannelingBuilder::onFailure '$reason'")
}
})
}
// launchView
private fun launchView(builder: LaunchChannelingBuilder) {
// launch
builder.launchView(
ownerActivity = this@MainActivity,
listener = object: ILaunchViewListener {
// onSuccess
override fun onSuccess() {
Log.e("ChannelBuilder", "launchView::onSuccess")
}
// onFailure
override fun onFailure() {
Log.e("ChannelBuilder", "launchView::onFailure")
}
}
)
}
}
Last updated