import com.nbase.sdk.Provider
NBase.signIn(activity, Provider.GOOGLE.toString()) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
NBase.onActivityResult(requestCode, resultCode, data)
}
import com.nbase.sdk.Provider;
NBase nBase = NBase.INSTANCE;
nBase.signIn(activity, Provider.GOOGLE.toString(), (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
nBase.onActivityResult(requestCode, resultCode, data);
}
NBase.showAppStatusPopup(activity, appStatus){ status, e ->
if (status.close){
// App Close
}
else if (status.next){
// Next, Optional update
}
}
NBase nBase = NBase.INSTANCE;
nBase.showAppStatusPopup(activity, appStatus){ status, e ->
if (status.getClose()){
// App Close
}
else if (status.getNext()){
// Next, Optional update
}
}
NBase.openSignInUI(activity) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
NBase nBase = NBase.INSTANCE;
nBase.openSignInUI(activity, (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
// 마지막 로그인 Provider 타입 확인
val lastProviderType = NBase.getLastProviderType()
if (lastProviderType != Provider.NONE) {
// 유효한 Provider가 있을 때만 자동 로그인 시도
NBase.signInLastLoggedIn(activity) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
} else {
// 마지막 로그인 정보가 없음
Log.e("NBase", "No last login provider found")
}
NBase nBase = NBase.INSTANCE;
// 마지막 로그인 Provider 타입 확인
Provider lastProviderType = nBase.getLastProviderType();
if (lastProviderType != Provider.NONE) {
// 유효한 Provider가 있을 때만 자동 로그인 시도
nBase.signInLastLoggedIn(activity, (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
} else {
// 마지막 로그인 정보가 없음
Log.e("NBase", "No last login provider found");
}
NBase.signOut(activity) { status, e ->
if (e != null) {
Log.e("NBase", "signOut Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "signOut")
Log.e("NBase", "status : " + status.toString())
// 로그아웃 성공 후 처리 로직
}
}
NBase nBase = NBase.INSTANCE;
nBase.signOut(activity, (status, e) -> {
if (e != null) {
Log.e("NBase", "signOut Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "signOut");
Log.e("NBase", "status : " + status.toString());
// 로그아웃 성공 후 처리 로직
}
return null;
});
NBase.deleteMember(providerId) { status, e ->
if (e != null) {
Log.e("NBase", "deleteMember Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "deleteMember")
Log.e("NBase", "status : " + status.toString())
// 회원 탈퇴 성공 후 처리 로직
}
}
NBase nBase = NBase.INSTANCE;
nBase.deleteMember(providerId, (status, e) -> {
if (e != null) {
Log.e("NBase", "deleteMember Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "deleteMember");
Log.e("NBase", "status : " + status.toString());
// 회원 탈퇴 성공 후 처리 로직
}
return null;
});
NBase.signInWithPassword(activity, username, password) { user, e ->
if (e != null) {
Log.e("NBase", e.message)
} else {
Log.e("NBase", user)
}
}
NBase.createLinking(activity, providerId) { linkingId, e ->
if (e != null) {
Log.e("NBase", "createLinking Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "createLinking")
Log.e("NBase", "linkingId : " + linkingId.toString())
// 계정 연동 성공 후 처리 로직
}
}
NBase nBase = NBase.INSTANCE;
nBase.createLinking(activity, providerId, (linkingId, e) -> {
if (e != null) {
Log.e("NBase", "createLinking Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "createLinking");
Log.e("NBase", "linkingId : " + linkingId);
// 계정 연동 성공 후 처리 로직
}
return null;
});
NBase.getLinkedLists { linkings, e ->
if (e != null) {
Log.e("NBase", "getLinkedLists Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "getLinkedLists")
Log.e("NBase", "linkings : " + linkings.toString())
// 연동 목록 확인 후 처리 로직
}
}
NBase nBase = NBase.INSTANCE;
nBase.getLinkedLists((linkings, e) -> {
if (e != null) {
Log.e("NBase", "getLinkedLists Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "getLinkedLists");
Log.e("NBase", "linkings : " + linkings.toString());
// 연동 목록 확인 후 처리 로직
}
return null;
});
NBase.deleteLinking(linkingId) { status, e ->
if (e != null) {
Log.e("NBase", "deleteLinking Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "deleteLinking")
Log.e("NBase", "status : " + status.toString())
// 연동 해제 성공 후 처리 로직
}
}
NBase nBase = NBase.INSTANCE;
nBase.deleteLinking(linkingId, (status, e) -> {
if (e != null) {
Log.e("NBase", "deleteLinking Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "deleteLinking");
Log.e("NBase", "status : " + status.toString());
// 연동 해제 성공 후 처리 로직
}
return null;
});
NBase.checkAppStatus(activity) { status, error ->
when (status) {
is NBaseAppStatus.Maintenance -> {
// Maintenance
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, status) { popupStatus, e ->
// Popup handling
}
*/
}
is NBaseAppStatus.Update -> {
// Update
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, status) { popupStatus, e ->
// Popup handling
}
*/
}
null -> {
// AppStatus Success or Error
if (error != null) {
Log.e("NBase", "checkAppStatus error: $error")
} else {
Log.e("NBase", "checkAppStatus success")
}
}
}
}
NBase nBase = NBase.INSTANCE;
nBase.checkAppStatus(activity, (status, error) -> {
if (status instanceof NBaseAppStatus.Maintenance) {
// Maintenance
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
nBase.showAppStatusPopup(activity, status, (popupStatus, e) -> {
// Popup handling
});
*/
} else if (status instanceof NBaseAppStatus.Update) {
// Update
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
nBase.showAppStatusPopup(activity, status, (popupStatus, e) -> {
// Popup handling
});
*/
} else if (status == null) {
// AppStatus Success or Error
if (error != null) {
Log.e("NBase", "checkAppStatus error: " + error.toString());
} else {
Log.e("NBase", "checkAppStatus success");
}
}
return null;
});
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.security.crypto.MasterKeys" on path: DexPathList[[zip file "/data/app/~~KKBtt9efgPjpqDSP6o3P1g==/com.nbase.je_beta-6fz3RrA1gqu27fSFW0ehcQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~KKBtt9efgPjpqDSP6o3P1g==/com.nbase.je_beta-6fz3RrA1gqu27fSFW0ehcQ==/lib/arm64, /system/lib64, /system/system_ext/lib64]]