initSDK

接口描述

用于启动并初始化SDK。

注意事项

  1. 该接口用于启动并初始化SDK,在调用其他接口之前必须先调用该接口。
  2. 初始化方法必须在主线程调用。
  3. 该接口可能由于参数传错导致调用失败抛出异常。
  4. 如无特殊考虑,都建议放到Application的attachBaseContext中初始化, 避免出现未 在Application的attachBaseContext中初始化, 导致多进程场景, 子进程无法使用SDK的隧道或者沙箱能力问题

接口定义

    public void initSDK(Context context, 
                        SFSDKMode sdkMode, 
                        int sdkFlags, 
                        Map<SFSDKExtras, String> extra)

参数说明

表1 参数说明

参数 是否必须 类型 描述
context Context Android的Context上下文信息
sdkMode SFSDKMode SDK模式选项(请看表2)
sdkFlags SFSDKFlags SDK基本配置选项(请看表3)
extra Map extra 额外配置,补充属性(请看表4),不传该参数,传null即可。

表2 枚举SFSDKMode说明

枚举值 描述
MODE_SUPPORT_MUTABLE SDK启动模式会根据配置变动 (推荐使用)
MODE_VPN SDK启用VPN接入功能 (已经废弃,不推荐使用)
MODE_VPN_SANDBOX SDK启动VPN和安全沙箱功能 (已经废弃,不推荐使用)

MODE_SUPPORT_MUTABLE说明

使用场景

如果希望部分用户使用集成SDK的APP仅具备代理访问内网业务的能力,部分用户使用集成SDK的APP不仅具备代理访问内网业务的能力,并且还具备数据防泄密的能力,可以使用该模式。

授权占用

  1. 当集成SDK的APP在应用中心授权给用户,用户使用该APP便会以接入+安全沙箱模式运行,并且占用并发授权和UEM移动版授权;
  2. 当集成SDK的APP在应用中心未授权给用户,用户使用该APP便会以接入模式运行,并且占用并发授权;
  3. 当“高级设置”中未勾选“允许未授权用户以接入模式运行”时:
    • (1) 如果集成SDK的APP在应用中心未授权给用户,则用户无法通过该APP接入使用;
    • (2) 如果集成SDK的APP在应用中心授权给用户,则用户可以通过该APP接入使用,并且占用并发授权和UEM移动版授权。

注意

使用MODE_SUPPORT_MUTABLE模式会根据你当前服务端控制台的配置动态切换MODE_VPN和MODE_VPN_SANDBOX,开关说明说明:

如果勾选,表示当前sdk应用可以让未授权的用户以接入模式登录:当前开关功能仅在服务端版本2.2.10及以上版本支持

image-20210402102437940

表3:枚举SFSDKFlags说明
注意事项:flags可以使用位或"|"来同时指定多个flag,参考initSDK的使用示例

枚举值 描述
FLAGS_VPN_MODE_TCP TCP模式,当前必选。
FLAGS_HOST_APPLICATION 主应用模式,与子应用模式二选一。
FLAGS_SUB_APPLICATION 子应用模式,与主应用模式二选一。
FLAGS_ENABLE_FILE_ISOLATION 启用文件加密隔离

表4:额外参数extra说明

枚举值 描述
EXTRA_KEY_FILE_ISOLATION 设置文件加密隔离路径白名单。
EXTRA_KEY_HOSTAPP_PACKAGE_NAME 主应用包名,子应用模式使用,将主应用包名传入。

示例代码


    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        // 推荐在Application的attachBaseContext初始化SDK
        initSDK(base);
    }

    private void initSDK(Context context) {
        int sdkFlags = 0;

        // 主应用(或者子应用,只能二选一)
        sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION;

        // TCP模式(必选)
          sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP;         

        // 额外参数
        Map<SFSDKExtras, String> extra = new HashMap<>();

        SFUemSDK.getInstance().initSDK(context,SFSDKMode.MODE_VPN_SANDBOX, sdkFlags, extra);
    }

results matching ""

    No results matching ""