接入智能教练SDK及参数设置
简要描述
主要协助第三方App接入智能教练SDK,并且设置相应参数的功能代码示例;
主要内容
引入方式:
智能教练SDK以framework框架的方式接入,将framework文件夹拖入工程,并设置Embed & Sign。设置工程info.plist权限:
相机权限:NSCameraUsageDescription
麦克风权限:NSMicrophoneUsageDescription
图库权限:NSPhotoLibraryUsageDescription关闭bitcode设置:
#import "PHAISparring/PHAISparring.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建配置
PHAISparringConfig *config = [[PHAISparringConfig alloc] init];
// 开发环境,测试
config.environment = PHAISparringEnvironmentDebug;
// 初始化SDK
[PHAISparring initializeWithConfig:config];
return YES;
}
#import "PHAISparring/PHAISparringManager.h"
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
NSLog(@"url = %@",navigationAction.request.URL.absoluteString.stringByRemovingPercentEncoding);
// 判断是否为云学堂智能陪练业务协议
if ([navigationAction.request.URL.absoluteString hasPrefix:@"yxtapp://biz.sparring"]) {
// 解析协议参数
NSDictionary *dic = [self getSparringCodeProtocolUrl:navigationAction.request.URL];
NSString *name = dic[@"name"];
NSString *code = dic[@"code"];
NSString *isPreview = dic[@"isPreview"];
// 处理是否预览
if (isPreview) {
PHAISparring.isPreview = [isPreview boolValue];
} else {
PHAISparring.isPreview = NO;
}
if ([name isEqualToString:@"yxt_app_sparring_start"]) {
// 开始训练
[PHAISparring startWithCode:code sender:self];
}else if ([name isEqualToString:@"yxt_app_sparring_open"]) {
// 进入智能陪练H5页面
[PHAISparring openPageWithCode:code sender:self];
}
decisionHandler(WKNavigationActionPolicyCancel);
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}
/// 解析协议参数
/// @param url 协议地址
- (NSDictionary *)getSparringCodeProtocolUrl:(NSURL *)url {
NSString *paramStr = [[[url.query componentsSeparatedByString:@"&"] firstObject] stringByReplacingOccurrencesOfString:@"param=" withString:@""].stringByRemovingPercentEncoding;
NSDictionary *paramDic = [NSJSONSerialization JSONObjectWithData:[paramStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
return paramDic;
}
// PHAISparringManager.h
@interface PHAISparring : NSObject
/// 初始化配置
/// @param config 配置模型
+ (void)initializeWithConfig:(PHAISparringConfig *)config;
/// 开始训练
+ (void)startWithCode:(NSString *)code sender:(UIViewController *)sender;
/// 结束训练
+ (void)stopWithCompletion:(void (^ __nullable)(void))completion;
/// 打开智能陪练h5页面
+ (void)openPageWithCode:(NSString *)code sender:(UIViewController *)sender;
@end