로그인/로그아웃
SDK를 사용하려면 사용자 로그인이 필요합니다. 앱의 로그인 플로우에 맞춰 SDK 로그인도 함께 처리합니다.
로그인
기본 로그인
Android:
val user = AdchainSdkUser(
userId = "user123", // 필수: 앱의 사용자 ID
gender = Gender.MALE, // 선택
birthYear = 1990 // 선택
)
AdchainSdk.login(
user = user,
listener = object : AdchainSdkLoginListener {
override fun onSuccess() {
// 로그인 성공
}
override fun onFailure(error: AdchainError) {
// 로그인 실패
Log.e("AdChain", "로그인 실패: ${error.message}")
}
}
)iOS:
let user = AdchainSdkUser(
userId: "user123",
gender: .male,
birthYear: 1990
)
AdchainSdk.shared.login(
adchainSdkUser: user,
listener: LoginListener()
)React Native:
await AdchainSdk.login({
userId: 'user123',
gender: 'MALE',
birthYear: 1990,
});userId는 뭘 써야 하나요?
앱에서 사용자를 식별하는 ID를 그대로 쓰시면 됩니다. 이메일, 전화번호, UUID, 숫자 ID 뭐든 상관없습니다. 단, 다음 조건을 지켜주세요:
고유해야 함: 같은 사용자는 항상 같은 ID
변하지 않음: 사용자가 앱을 삭제하고 다시 설치해도 같은 ID
개인정보 아님: 가능하면 이메일이나 전화번호보다는 해시된 ID가 좋습니다
성별과 출생연도는 왜 필요한가요?
선택사항이지만, 제공하면 광고 타겟팅 정확도가 향상되어 매출에 도움이 됩니다. 예를 들어:
20대 남성에게는 게임 광고
30대 여성에게는 쇼핑 광고
다음과 같이 적합한 광고를 표시할 수 있습니다. 사용자에게는 관심 있는 광고가 표시되고, 광고주에게는 높은 전환율을 제공합니다.
없어도 작동은 합니다. 다만 매출이 20-30% 정도 낮을 수 있습니다.
성별 옵션
// Android
Gender.MALE
Gender.FEMALE
Gender.OTHER
Gender.UNKNOWN
// iOS
.male
.female
.other
.unknown
// React Native
'MALE'
'FEMALE'
'OTHER'
'UNKNOWN'로그인 상태 확인
로그인 됐는지 확인:
Android:
if (AdchainSdk.isLoggedIn) {
// 로그인됨
val currentUser = AdchainSdk.getCurrentUser()
println("현재 사용자: ${currentUser?.userId}")
} else {
// 로그인 안 됨
}iOS:
if AdchainSdk.shared.isLoggedIn {
let currentUser = AdchainSdk.shared.getCurrentUser()
print("현재 사용자: \(currentUser?.userId ?? "")")
} else {
// 로그인 안 됨
}React Native:
const isLoggedIn = await AdchainSdk.isLoggedIn();
if (isLoggedIn) {
const user = await AdchainSdk.getCurrentUser();
console.log('현재 사용자:', user.userId);
}로그아웃
사용자가 앱에서 로그아웃할 때 SDK 로그아웃도 같이 해야 합니다:
Android:
AdchainSdk.logout()iOS:
AdchainSdk.shared.logout()React Native:
await AdchainSdk.logout();로그아웃하면 SDK가 가지고 있던 사용자 데이터가 모두 지워집니다. 다시 오퍼월을 쓰려면 로그인을 새로 해야 합니다.
자동 로그인
앱을 다시 실행했을 때 자동으로 로그인되게 하려면:
// Android
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// SDK 초기화
AdchainSdk.initialize(...)
// 저장된 사용자 정보가 있으면 자동 로그인
val savedUserId = SharedPreferencesHelper.getUserId() // 앱의 저장소에서
if (savedUserId != null) {
val user = AdchainSdkUser(userId = savedUserId, ...)
AdchainSdk.login(user, ...)
}
}
}마찬가지로 iOS나 React Native에서도 앱 시작 시 저장된 사용자 정보로 자동 로그인할 수 있습니다.
사용자 정보 업데이트
사용자 정보가 변경되면(예: 프로필에서 성별 변경) 다시 로그인합니다. SDK가 자동으로 업데이트합니다:
// 사용자가 프로필 수정했을 때
val updatedUser = AdchainSdkUser(
userId = currentUserId,
gender = Gender.FEMALE, // 변경됨
birthYear = currentBirthYear
)
AdchainSdk.login(updatedUser, ...) // 다시 로그인여러 사용자 지원
한 기기에서 여러 사용자가 번갈아가며 쓸 수 있는 앱이라면:
// A 사용자 로그아웃
AdchainSdk.logout()
// B 사용자 로그인
val userB = AdchainSdkUser(userId = "userB", ...)
AdchainSdk.login(userB, ...)이렇게 하면 각 사용자의 데이터가 섞이지 않습니다.
문제 해결
로그인이 계속 실패해요
SDK 초기화 확인
if (!AdchainSdk.isInitialized()) { // 초기화를 먼저 해야 합니다 }인터넷 연결 확인
로그인할 때 애드체인 서버와 통신합니다.
appKey/appSecret 확인
초기화할 때 넣은 값이 맞는지 확인하세요.
에러 메시지 확인
override fun onFailure(error: AdchainError) { Log.e("AdChain", "에러 코드: ${error.code}, 메시지: ${error.message}") }
로그인은 되는데 오퍼월이 안 열려요
로그인 콜백이 온 다음에 오퍼월을 열어야 합니다:
AdchainSdk.login(user, object : AdchainSdkLoginListener {
override fun onSuccess() {
// 여기서 오퍼월을 열어야 함
AdchainSdk.openOfferwall(...)
}
...
})다음 단계
Last updated