前置条件
- SDKDemo工程默认指定的的gradle版本如下:
//gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
//build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
}
2. 如果编译SDKDemo出现编译问题,提示如下错误:
This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 4.1 or newer.
3. 请将SDKDemo中gradle-wrapper.properties文件默认指定的版本号,以及build.gradle中dependencies的版本号修改成本地AndroidStudio工程的能正常编译的工程版本即可
1. SDKDemo
SDKDemo是主应用示例Demo,里面包含了文档中四个典型场景的实现,下面介绍下四大场景在Demo中的关键代码
SDK初始化+注销事件监听
SDKDemo中示例代码如下:
public class SFApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
sContext = base;
/**
* 初始化sdk,推荐在attachBaseContext中调用,因为sdk延后初始化会导致多进程场景下,子进程无法拥有sdk的能力
*/
initSdk(base);
GlobalListenerManager.getInstance().init(base);
}
}
用户名密码认证场景
SDKDemo中示例代码如下:
public class PrimaryAuthActivity {
//参考SDKDemo中 PrimaryAuthActivity实现
}
用户名密码+短信认证场景
SDKDemo中示例代码如下:
public class SecondAuthActivity {
//参考SDKDemo中 SecondAuthActivity
}
用户名密码+启用SPA场景
SDKDemo中示例代码如下:
public class SpaAuthActivity {
//参考SDKDemo中 SpaAuthActivity
}
主从应用-主应用场景
SDKDemo中示例代码如下:
public class GlobalListenerManager {
//参考SDKDemo中 GlobalListenerManager
}
2. SubAppDemo
SubAppDemo是子应用示例Demo,里面包含了主从场景下子应用的处理逻辑
SDK初始化+注销事件监听
SubAppDemo中示例代码如下:
public class SFApplication extends Application {
private static final String TAG = "SFApplication";
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
/**
* 初始化sdk,推荐在attachBaseContext中调用,因为sdk延后初始化会导致多进程场景下,子进程无法拥有sdk的能力
*/
initSdk(base);
/**
* 初始化注销监听回调
*/
GlobalListenerManager.getInstance().init(base);
}
@Override
public void onCreate() {
super.onCreate();
/**
* 前后台监听逻辑,需要在attachBaseContext之后调用
*/
AppForegroundManager.getInstance().init(this);
}
}
指定主应用包名
<!-- 参考SubAppDemo的AndroidManifest.xml -->
<meta-data
android:name="host_data"
android:value="com.sangfor.sdkdemo" />
应用启动场景下的免密认证+跳转主应用授权逻辑
public class LoginAuthActivity {
//参考SubAppDemo中 LoginAuthActivity
}
注销事件监听处理
public class GlobalListenerManager {
//参考SubAppDemo中 GlobalListenerManager
}
前台事件监听处理
public class AppForegroundManager {
//参考SubAppDemo中 AppForegroundManager处理
}