Android 一键登录最佳实践
最近更新:2024-06-07
Android 一键登录最佳实践
本文旨要介绍 Android SDK 一键登录的最佳实践方式。
支持版本
v3.0.0 及以后版本。
一键登录流程说明
初始化SDK->获取运营商预取号->设置授权页面UI样式->拉起授权页面
1、初始化
我们建议在Application的onCreate方法中初始化SDK。 SDK初始化的目的是为了提前拉取运营商配置,提前拉取运行商配置有助于提高一键登录的速度。
@Override
public void onCreate() {
super.onCreate();
JVerificationInterface.init(this, new RequestCallback<String>() {
@Override
public void onResult(int code, String result) {
}
});
}
@Override
public void onCreate() {
super.onCreate();
JVerificationInterface.init(this, new RequestCallback<String>() {
@Override
public void onResult(int code, String result) {
}
});
}
此代码块在浮窗中显示
1、获取运营商预取号
API:预取号 预取号是通过运营商获取登录token的前置步骤,所以我们建议在进入需要使用一键登录的页面后,先调用预取号接口,这样当用户真正要使用一键登录的时候可以减少预取号加载时间,提升用户体验。
我们建议用户增加一个字段存储预取号接口状态!
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//建议在页面加载时进行获取预取号
preLogin();
}
//增加一个字段存储预取号接口状态
private boolean finishPrelogin = true;
private void preLogin() {
//判断SDK初始化状态
if (JVerificationInterface.isInitSuccess()){
this.finishPrelogin = false;
JVerificationInterface.preLogin(this, 5000, new PreLoginListener() {
@Override
public void onResult(final int code, final String content, JSONObject operatorReturn) {
//回调响应结果,建议用户增加一个字段存储预取号接口状态
this.finishPrelogin = true;
}
});
}
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//建议在页面加载时进行获取预取号
preLogin();
}
//增加一个字段存储预取号接口状态
private boolean finishPrelogin = true;
private void preLogin() {
//判断SDK初始化状态
if (JVerificationInterface.isInitSuccess()){
this.finishPrelogin = false;
JVerificationInterface.preLogin(this, 5000, new PreLoginListener() {
@Override
public void onResult(final int code, final String content, JSONObject operatorReturn) {
//回调响应结果,建议用户增加一个字段存储预取号接口状态
this.finishPrelogin = true;
}
});
}
}
此代码块在浮窗中显示
API说明
参数 | 类型 | 含义 | 说明 |
---|---|---|---|
context | Context | 上下文 | 应用程序的上下文 |
timeOut | int | 超时时间 | 有效取值范围(0,10000], 若小于等于 0 则取默认值 5000. 大于 10000 则取 10000, 为保证预取号的成功率,建议设置为 3000-5000ms |
listener | PreLoginListener | 接口回调 | 预取号结果的响应回调 |
2、设置授权页面UI样式
API:自定义授权页面 UI 样式 在拉起授权登录页面之前,建议设置自定义的页面样式以呈现更好的页面效果。
private void loginAuth() {
//一些前置操作,例如:判断是否处于预取号中,加载HUD等等
..............
//建议拉起授权页面之前设置自定义UI
setUIConfig();
//以下为拉起授权页面部分
..............
}
private void setUIConfig() {
//UIConfig案例,具体参考API文档JVerifyUIConfig 一键登录-配置元素说明
JVerifyUIConfig uiConfig = new JVerifyUIConfig.Builder().setAuthBGImgPath("main_bg")
.setNavColor(0xff0086d0)
.setNavText("登录")
.setNavTextColor(0xffffffff)
.setNavReturnImgPath("umcsdk_return_bg")
.setLogoWidth(70)
.setLogoHeight(70)
.setLogoHidden(false)
.setNumberColor(0xff333333)
.setLogBtnText("本机号码一键登录")
.setLogBtnTextColor(0xffffffff)
.setLogBtnImgPath("umcsdk_login_btn_bg")
.setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
.setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
.setUncheckedImgPath("umcsdk_uncheck_image")
.setCheckedImgPath("umcsdk_check_image")
.setSloganTextColor(0xff999999)
.setLogoOffsetY(50)
.setLogoImgPath("logo_cm")
.setNumFieldOffsetY(170)
.setSloganOffsetY(230)
.setLogBtnOffsetY(254)
.setNumberSize(18)
.setPrivacyState(false)
.setNavTransparent(false)
.addCustomView(mBtn, true, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show();}
}).addCustomView(mBtn2, false, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮 222",Toast.LENGTH_SHORT).show();}
}).addNavControlView(navBtn, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show();}
}).setPrivacyOffsetY(30).build();
//设置自定义页面UI
JVerificationInterface.setCustomUIWithConfig(uiConfig);
}
private void loginAuth() {
//一些前置操作,例如:判断是否处于预取号中,加载HUD等等
..............
//建议拉起授权页面之前设置自定义UI
setUIConfig();
//以下为拉起授权页面部分
..............
}
private void setUIConfig() {
//UIConfig案例,具体参考API文档JVerifyUIConfig 一键登录-配置元素说明
JVerifyUIConfig uiConfig = new JVerifyUIConfig.Builder().setAuthBGImgPath("main_bg")
.setNavColor(0xff0086d0)
.setNavText("登录")
.setNavTextColor(0xffffffff)
.setNavReturnImgPath("umcsdk_return_bg")
.setLogoWidth(70)
.setLogoHeight(70)
.setLogoHidden(false)
.setNumberColor(0xff333333)
.setLogBtnText("本机号码一键登录")
.setLogBtnTextColor(0xffffffff)
.setLogBtnImgPath("umcsdk_login_btn_bg")
.setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
.setPrivacyNameAndUrlBeanList(List<PrivacyBean>)
.setUncheckedImgPath("umcsdk_uncheck_image")
.setCheckedImgPath("umcsdk_check_image")
.setSloganTextColor(0xff999999)
.setLogoOffsetY(50)
.setLogoImgPath("logo_cm")
.setNumFieldOffsetY(170)
.setSloganOffsetY(230)
.setLogBtnOffsetY(254)
.setNumberSize(18)
.setPrivacyState(false)
.setNavTransparent(false)
.addCustomView(mBtn, true, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show();}
}).addCustomView(mBtn2, false, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"动态注册的其他按钮 222",Toast.LENGTH_SHORT).show();}
}).addNavControlView(navBtn, new JVerifyUIClickCallback() {
@Override
public void onClicked(Context context, View view) {Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show();}
}).setPrivacyOffsetY(30).build();
//设置自定义页面UI
JVerificationInterface.setCustomUIWithConfig(uiConfig);
}
此代码块在浮窗中显示
3、拉起授权页面
API:拉起授权页面 拉起授权页面,在该页面中完成一键登录; ####注意 如果没有获取预取号该接口则会主动获取预取号,然后再进行拉起页面; 如果调用该接口时调用了预取号接口并且还没有获取完成,则回调中会返回预取号获取中的提示,建议在预取号获取完成后再调用该接口; 没有设置自定义UI,会使用默认UI;
private void loginAuth() {
//如果预登录未完成则不建议调用一键登录,根据我们的数据分析如果预登录较长时间未完成,一键登录的成功率也会降低,所以用户体验最好的方式就是,在预登录接口执行完成后进行一键登录。
//我们强烈建议,在一键登录的前置页面进行预取号接口调用。
if (!finishPrelogin) {
return;
}
//设置自定义UI
setUIConfig();
//LoginSettings为登录配置
LoginSettings settings = new LoginSettings();
settings.setAutoFinish(true);// 设置登录完成后是否自动关闭授权页
settings.setTimeout(15 * 1000);// 设置超时时间,单位毫秒。 合法范围(0,30000], 范围以外默认设置为 10000
settings.setAuthPageEventListener(new AuthPageEventListener() {
@Override
public void onEvent(int cmd, String msg) {//do something...}
});// 设置授权页事件监听
//拉起授权页面
JVerificationInterface.loginAuth(this, settings, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator, JSONObject operatorReturn) {
//回调授权页面响应结果
//得到loginToken以完成登录
}
});
}
private void setUIConfig() {
......
}
private void loginAuth() {
//如果预登录未完成则不建议调用一键登录,根据我们的数据分析如果预登录较长时间未完成,一键登录的成功率也会降低,所以用户体验最好的方式就是,在预登录接口执行完成后进行一键登录。
//我们强烈建议,在一键登录的前置页面进行预取号接口调用。
if (!finishPrelogin) {
return;
}
//设置自定义UI
setUIConfig();
//LoginSettings为登录配置
LoginSettings settings = new LoginSettings();
settings.setAutoFinish(true);// 设置登录完成后是否自动关闭授权页
settings.setTimeout(15 * 1000);// 设置超时时间,单位毫秒。 合法范围(0,30000], 范围以外默认设置为 10000
settings.setAuthPageEventListener(new AuthPageEventListener() {
@Override
public void onEvent(int cmd, String msg) {//do something...}
});// 设置授权页事件监听
//拉起授权页面
JVerificationInterface.loginAuth(this, settings, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator, JSONObject operatorReturn) {
//回调授权页面响应结果
//得到loginToken以完成登录
}
});
}
private void setUIConfig() {
......
}
此代码块在浮窗中显示
API说明
参数 | 类型 | 含义 | 说明 |
---|---|---|---|
context | Context | 上下文 | 应用程序的上下文 |
settings | LoginSettings | 登录接口设置项 | 用来设置登录完成后是否自动关闭等配置, |
listener | VerifyListener | 接口回调 | 登录结果的响应回调 |
文档内容是否对您有帮助?