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
}