KTplay登录

 

使用KTplay登录窗口

使用游戏账户登录KTplay

同步游戏账户资料到KTplay

禁止玩家修改账户资料

账户登出

获取登录状态

监听登录状态变更

获取当前登录账户信息

获取玩家信息

使用KTplay登录窗口

如果游戏自身没有用户系统,但需要使用用户信息相关功能可以调用 showLoginView 方法,使用KTplay的账户系统

KTAccountManager.showLoginView(closeable,
  new KTLoginListener(){
                @Override
                public void onLoginResult(boolean isSuccess, KTUser user,
                        KTError error) {
                    if(isSuccess){
                            //login success

                    }else{
                        //login failed
                    }
                }
    });

[KTAccountManager showLoginView:NO success:^(KTUser * account) {
    //login success
} failure:^(NSError *error) {
   //login failed
}

static void showLoginViewCallback(bool isSuccess ,KTUserC * user,KTErrorC *error)
{
    if (isSuccess) {
        //login success
    } else {
       //login failed
    }
}

KTAccountManagerC::showLoginView(false, showLoginViewCallback);

KTAccountManager.ShowLoginView (true, (KTUser user, KTError error) => {
        if(error==null){
            //success
        }else{
            //failed
        }
});

使用游戏账户登录KTplay

注意:

  • 使用此功能,请确保游戏已经有自己的账户系统,之后联系 support@ktplay.com 开通权限。
  • 传入的游戏账户ID,在整个游戏账户系统中必须唯一。

    • 如果你的游戏账户ID可能存在重复,如网游不同的服务器,iOS和Android共用社区等,调用接口时,需加上标识予以区分(如加上服务器/平台前缀),否则相同的游戏账户ID会被认定为同一个KTplay账户。
  • 登录成功后,建议 修改账户资料 ,以保持用户体验的一致性。

  • 当用户退出游戏账户时,确保同时调用了 KTplay的登出

//pass logged-in game user id to KTplay backend
KTAccountManager.loginWithGameUser("100010", new KTAccountManager.KTGameUserLoginListener() {

                    @Override
                    public void onLoginResult(boolean isSuccess, String gameUserId,
                            KTUser user, KTError error) {
                        if(isSuccess){
                           //success

                        }else{
                            //failed
                        }

                    }
                });

//pass logged-in game user id to KTplay backend
   [KTAccountManager loginWithGameUser:@"100010" success:^(KTUser *user) {
    //success 
   } failure:^(NSError *error) {
    //failed
   }];

static void loginWithGameUserCallback(bool isSuccess ,const char * gameUserid, KTUserC * user,KTErrorC *error)
{
    if (isSuccess) {
        // success, with user profile
    } else {
        //failed
    }
}

KTAccountManagerC::loginWithGameUser("100010", loginWithGameUserCallback);

KTAccountManager.LoginWithGameUser ("100010", (KTUser user, KTError error) => {
        if(error==null){
            //success
        }else{
        //failed
        }
});

同步游戏账户资料到KTplay

游戏账户登录到KTplay 之后,你可以同步账户资料到KTplay平台,目前支持的内容包括:

  • 昵称。允许重复,如果传null则不修改昵称。
    • 登录到KTplay后可获得登录账户信息,你可以通过账户信息中的isNicknameChanged判断昵称是否被修改过,来决定是保持现有的昵称还是直接覆盖。
  • 头像。使用本地文件路径,如果传null则不修改头像。
  • 性别。0-不修改,1-男,2-女。

KTAccountManager.updateProfile(nickname, avatarFilePath, gender, new KTAccountManager.OnUpdateProfileListener() {
                    @Override
                    public void onUpdateProfileResult(boolean isSuccess,
                                                    KTUser user, KTError error) {
                        if(isSuccess){
                            //success
                        }else{
                            //failed                        }
                    }
                });

 [KTAccountManager updateProfile:nickname avatarPath: avatarFilePath gender:gender complete:^(BOOL isSuccess, KTUser *user, NSError *error) {
                if (isSuccess) {
                   //success
                }else{
                   //failed
                }
            }];

//Callback
void Game::ktUpdateProfileCallback(bool isSuccess, KTUserC * user, KTErrorC *error)
{
    if(isSuccess)
    {
        //success
    }
    else
    {
        //failed
    }
}

//Update profile.
KTAccountManagerC::updateProfile(nickName, avatarFilePath, gender, ktUpdateProfileCallback);

KTAccountManager.UpdateProfile (nickName, avatarFilePath, gender, (bool isSuccess, KTUser user, KTError error) => {
                if(isSuccess){
                    //success
                }else{
                    //failed
                }
                });

禁止玩家修改账户资料

默认情况下,玩家可以修改自己的资料如昵称,头像等。如果你的游戏是通过自己的账户系统登录到KTplay,并同步了账户资料,你可以根据需要禁止玩家修改具体的资料项。
调用KTAccountManager类的setUserProfileLocks方法,目前支持禁止修改的资料项有:

  • KT_USERPROFILE_PROPERTY_NICKNAME 昵称
  • KT_USERPROFILE_PROPERTY_AVATAR 头像
  • KT_USERPROFILE_PROPERTY_GENDER 性别

如果要同时禁止多个资料项,使用 | 连接。

如: KT_USERPROFILE_PROPERTY_NICKNAME | KT_USERPROFILE_PROPERTY_AVATAR

//Lock editability for nickname and avatar.
KTAccountManager.setUserProfileLocks(KT_USERPROFILE_PROPERTY_NICKNAME|KT_USERPROFILE_PROPERTY_AVATAR);

//Lock editability for nickname and avatar.
[KTAccountManager setUserProfileLocks:KT_USERPROFILE_PROPERTY_NICKNAME|KT_USERPROFILE_PROPERTY_AVATAR];

//Lock editability for nickname and avatar.
KTAccountManagerC::setUserProfileLocks(KT_USERPROFILE_PROPERTY_NICKNAMEC | KT_USERPROFILE_PROPERTY_AVATARC);

//Lock editability for nickname and avatar.
KTAccountManager.setUserProfileLocks(KTAccountManager.KT_USERPROFILE_PROPERTY_NICKNAME|KTAccountManager.KT_USERPROFILE_PROPERTY_AVATAR);

账户登出

当使用游戏自己的用户系统时,在登出游戏时同时也要登出社区

KTAccountManager.logout();

[KTAccountManager logout];

KTAccountManagerC::logout();

KTAccountManager.Logout();

监听登录状态变更

该回调会监听用户登录状态的变更

OnLoginStatusChangedListener onloginstatuschangedListener=
new OnLoginStatusChangedListener(){

  public void onLoginStatusChanged(boolean isLoggedIn, KTUser user){
                            if (isLoggedIn){
                                    //logged-in
                      }else{
                            //not logged-in
                       }
   }

 }

KTAccountManager.setLoginStatusChangedListener(onloginstatuschangedListener);

KTLoginStatusChangedBlock block = ^(BOOL isLoggedIn, KTUser * account){
        if (isLoggedIn){
                           //logged-in
                      }else{
                            //not logged-in
                       }
}

void loginStatusChangedCallback(bool isLoggedIn, KTUserC * user)
{
    if(isLoggedIn) {
        //logged-in
    } else {
         //not logged-in
    }
}


KTAccountManagerC::setLoginStatusChangedCallback(loginStatusChangedCallback);

KTAccountManager.SetLoginStatusChangeDelegate ((bool isLoggedIn, KTUser user) => {
    if(isLoggedIn) {
        //logged-in
    } else {
         //not logged-in
    }
});

获取登录状态

  boolean isLoggedIn = KTAccountManager.isLoggedIn();
     if(isLoggedIn){
         //login 
     }else{
         //not logged-in
  }

BOOL isLoggedIn  = [KTAccountManager isLoggedIn];
if(isLoggedIn){
    //logged-in
}else{
    //not logged-in
}

    bool isLoggedIn = KTAccountManagerC::isLoggedIn();
    if(isLoggedIn) {
        //logged-in
    } else {
        //not logged-in
    }

    bool isLoggedIn = KTAccountManager.IsLoggedIn();
    if(isLoggedIn){
     //logged-in
    }else{
     //not logged-in
    }

获取当前登录账户信息

KTUser curLoggedInUser = KTAccountManager.currentAccount();
//if user equal to null ,is not yet logged-in

KTUser *user = [KTAccountManager currentAccount];
//if user equal to nil ,is not yet logged-in

KTUserC *userC = KTAccountManagerC::currentAccount();
//if user equal to null ,is not yet logged-in

KTUser user = (KTUser)KTAccountManager.CurrentAccount();
//if user equal to null ,is not yet logged-in

获取玩家信息

KTAccountManager.OnGetUserInfoListener onGetUserInfoListener=
new KTAccountManager.OnGetUserInfoListener(){

    @Override
    public void onGetUserInfoResult(boolean isSuccess ,String userId,
    KTUser user, KTError error) {
        if(isSuccess){
           //success
        }else{
           //failed
        }
    }
    }

KTAccountManager.userProfile("userId", onGetUserInfoListener);

[KTAccountManager userProfile:@"userId" success:^(KTUser *user) {
            //success 
        } failure:^(NSError *error) {
            //failed
    }];

static void userProfileCallback(bool isSuccess ,const char *userId ,KTUserC * user,KTErrorC *error)
{
    if (isSuccess) {
        //success
    } else {
        //failed

    }
}

KTAccountManagerC::userProfile("userId" ,userProfileCallback);

KTAccountManager.GetUserProfile ("userId", (KTUser user, KTError error) => {
    if(error==null){
        //success
    }else{
        //failed
    }
});
还有其它问题?提交请求

0 评论

登录写评论。