准备工作:
1、极光平台注册一个App,获取到APP_ID。
2、在Android Studio生成签名文件。
3、在moudle模块下的build.gradle文件下:添加以下内容
plugins {
id 'com.android.application'
}
android {
buildTypes {
debug {
debuggable true
}
}
signingConfigs {
debug {
storeFile file('../keystore/a.keystore')
storePassword '123456'
keyAlias 'key'
keyPassword '123456'
}
}
namespace '包名'//改为自己的包名
compileSdk 33
defaultConfig {
applicationId "包名"//改为自己的包名
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi' , 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [
// JPUSH_PKGNAME:设置应用程序的包名,通常使用 Gradle 构建脚本中的 applicationId。
JPUSH_PKGNAME : applicationId,
// JPUSH_APPKEY:设置极光推送的应用程序密钥(appKey)。这通常是在极光 Portal 上注册的应用程序包名对应的 appKey。
JPUSH_APPKEY : "e4812b60330413fbdaaef831",
// JPUSH_CHANNEL:设置应用程序的渠道信息。通常可以填写默认值。
JPUSH_CHANNEL : "developer-default"
]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'cn.jiguang.sdk:jverification:3.0.0'//极光SDK
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
正文:
一、导入依赖
implementation 'cn.jiguang.sdk:jverification:3.0.0'//极光SDK
二、在MyApplication中添加一下内容,没有MyApplication则自己创建一个
注意:别忘了在AndroidManifest清单文件设置下:(android:name=".MyApplication")
public class MyApplication extends Application {
private Context context;
@Override
public void onCreate() {
super.onCreate();
context = this;
// 初始化 JVerification,用于集成极光认证(JVerification)服务。
JVerificationInterface.init(context);
// 设置 JVerification 的调试模式,用于调试和日志记录。在正式发布应用程序时,通常将其设置为 false。
JVerificationInterface.setDebugMode(true);
// 初始化 JVerification 配置,设置参数:
// - context:传入当前上下文。
// - 5000:设置超时时间,单位为毫秒。
// - RequestCallback<String>:用于处理初始化结果的回调接口,其中 String 参数为结果消息。
JVerificationInterface.init(context, 5000, new RequestCallback<String>() {
@Override
public void onResult(int code, String msg) {
// 处理初始化结果的回调函数,其中 code 表示初始化结果的状态码,msg 包含初始化的详细信息。
// 通常,code = 8000 表示配置初始化成功。
Log.d("TAG", "code = " + code + ", msg = " + msg);
}
});
}
}
三、MainActivity实现
public class MainActivity extends AppCompatActivity {
private Button loginBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginBtn = findViewById(R.id.login);
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 创建一个 JVerifyUIConfig.Builder 实例,用于配置 UI 样式
JVerifyUIConfig.Builder builder = new JVerifyUIConfig.Builder();
// 设置登录页面的 Logo 图标路径,这里使用 R.drawable.qqwweerr 作为 Logo 图标
// 注意:您可能需要使用 ContextCompat.getDrawable() 获取 Drawable 资源
builder.setLogoImgPath(String.valueOf(R.drawable.ic_launcher_background));
// 设置 Logo 图标的高度和宽度
builder.setLogoHeight(100);
builder.setLogoWidth(100);
// 设置隐私协议布局的左边距
builder.setPrivacyMarginL(50);
// 设置是否隐藏 Logo 图标
builder.setLogoHidden(false);
// 构建 JVerifyUIConfig 配置对象
JVerifyUIConfig uiConfig = builder.build();
// 使用 JVerificationInterface 设置自定义的 UI 样式配置
JVerificationInterface.setCustomUIWithConfig(uiConfig);
// 使用 JVerificationInterface 的 checkVerifyEnable 方法来检查当前环境是否允许进行验证操作(例如手机短信验证码验证)。
// 检查条件包括:
// 1. 是否有可用的 SIM 卡,因为验证通常需要使用 SIM 卡发送短信验证码。
// 2. 是否有可用的网络连接(例如,Wi-Fi 或移动数据连接),因为验证需要与服务器进行通信。
// 3. 是否已授予电话权限,因为验证可能需要读取电话状态以处理来电和短信。
// 4. 是否已授予读取联系人权限,因为验证可能需要读取联系人信息以填充一些信息。
// 5. 是否已授予读取短信权限,因为验证通常需要读取接收到的短信以提取验证码信息。
// JVerificationInterface.checkVerifyEnable(getApplicationContext()) 返回一个布尔值,指示当前环境是否满足上述条件。
// 如果返回 true,则表示可以进行验证操作。
// 如果返回 false,则表示不满足验证条件,可能需要用户采取一些措施来满足这些条件(例如插入 SIM 卡、打开网络连接或授予权限)。
boolean verifyEnable = JVerificationInterface.checkVerifyEnable(getApplicationContext());
// 使用 JVerificationInterface.loginAuth 方法触发登录认证操作,允许用户登录并进行身份验证。
// 参数说明:
// - this:传入当前上下文。
// - true:表示启用一键登录,false 表示不使用一键登录。
// - VerifyListener:用于处理认证结果的回调接口。
// - code:认证结果码,用于表示认证的状态,例如 6000 表示认证成功。
// - content:认证结果消息,包含有关认证状态的详细信息。
// - operator:运营商信息,表示当前认证所使用的运营商。
// - 在回调中,根据 code 的值可以执行不同的操作,例如处理成功或失败的情况。
JVerificationInterface.loginAuth(MainActivity.this, true, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator) {
Log.d("TAG", "[" + code + "] loginAuth message=" + content + ", operator=" + operator);
if (code == 6000) {
// 处理认证成功的情况
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
} else {
// 处理认证失败的情况
Toast.makeText(MainActivity.this, "认证失败,请重试", Toast.LENGTH_SHORT).show();
}
}
}, new AuthPageEventListener() {
@Override
public void onEvent(int cmd, String msg) {
// AuthPageEventListener 是用于监听认证页面事件的抽象类。
// 在认证页面事件发生时,会触发此方法的回调。
// 参数说明:
// - cmd:事件命令,表示发生的具体事件,可以根据不同的命令执行不同的操作。
// - msg:事件消息,包含有关事件的详细信息。
Log.d("TAG", "[onEvent]. [" + cmd + "] message=" + msg);
}
});
}
});
}
}