1. MainApp

MainApp是主应用示例Demo,里面包含了文档中四个典型场景的实现,下面介绍下四大场景在Demo中的关键代码

SDK初始化+注册注销事件监听

MainApp中示例代码如下:

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   /**
     * SDK的初始化模式只能放在didFinishLaunchingWithOptions中
     * 建议配置为SFSDKModeSupportVpnSandbox,表示同时启动VPN和沙箱能力。如果您确定不需要沙箱能力,那么请改成SFSDKModeSupportVpn
     * 配置为SFSDKFlagsHostApplication,表示当前集成应用是主应用。
     */
    SFSDKMode mode = SFSDKModeSupportVpnSandbox;
    [[SFUemSDK sharedInstance] initSDK:mode
                                 flags:SFSDKFlagsHostApplication
                                 extra:nil];

    /**
     * 注销事件监听回调,推荐在AppDelegate里面监听,可以做到全局监听,方便统一处理注销事件
     */
    [[SFUemSDK sharedInstance] registerLogoutDelegate:self];
}
@end

用户名密码认证场景

MainApp中示例代码如下:

@implementation BasicSceneViewController

  //参考MainApp中 BasicSceneViewController实现

@end

用户名密码+短信认证场景

MainApp中示例代码如下:

@implementation SecondAuthViewController

  //参考MainApp中 SecondAuthViewController实现

@end

用户名密码+启用SPA场景

MainApp中示例代码如下:

@implementation SpaAuthViewController

  //参考MainApp中 SpaAuthViewController实现

@end

主从应用-主应用场景

MainApp是主应用的示例Demo,里面包含了主从场景下主应用的处理逻辑,主体流程如下

1、 配置Info.plist

主应用需要配置SFEasyApp.bundleId格式的URLScheme,用于从应用拉起。其中bundleId是主应用的bundleId。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>SFEasyApp.com.sangfor.sdktest</string>
        </array>
    </dict>
</array>
</plist>

2、代码示例

MainApp中关于主从相关的示例代码都在AppDelegate中,如下:

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    /**
     * 注册拉起回调接口,当被子应用拉起时,会回调onAppLaunched函数
     */
    [[[SFUemSDK sharedInstance] launch] setAppLaunchDelegate:self];
}

- (void)onAppLaunched:(SFLaunchInfo *)launchInfo {
    //参考MainApp中 此函数实现
}

@end

主从应用-子应用场景

SubApp是子应用示例Demo,里面包含了主从场景下子应用的处理逻辑

1、配置Info.plist

子应用需要配置SFEasyApp.bundleId格式的URLScheme,其中bundleId是子应用的包名,用于主应用授权后拉回子应用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>SFEasyApp.com.sangfor.sdktestsubapp</string>
        </array>
    </dict>
</array>
</plist>

子应用需要配置主应用的URLScheme到子应用的LSApplicationQueriesSchemes白名单,用于判断主应用是否安装

  <!-- 参考SubApp的Info.plist -->
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>SFEasyApp.com.sangfor.sdktest</string>
</array>
</plist>

2、 代码示例

SubApp中中关于主从相关的示例代码都在AppDelegate中,如下:

public class AppDelegate {
      //参考SubApp中 AppDelegate
}

results matching ""

    No results matching ""