接入智能教练SDK及参数设置

简要描述

主要协助第三方App接入智能教练SDK,并且设置相应参数的功能代码示例;

主要内容

  • 接入SDK

    SDK支持版本:iOS9+
  1. 引入方式:
    智能教练SDK以framework框架的方式接入,将framework文件夹拖入工程,并设置Embed & Sign。
    设置Framework

  2. 设置工程info.plist权限:
    相机权限:NSCameraUsageDescription
    麦克风权限:NSMicrophoneUsageDescription
    图库权限:NSPhotoLibraryUsageDescription

  3. 关闭bitcode设置:

  • 初始化SDK

  1. #import "PHAISparring/PHAISparring.h"
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  3. // 创建配置
  4. PHAISparringConfig *config = [[PHAISparringConfig alloc] init];
  5. // 开发环境,测试
  6. config.environment = PHAISparringEnvironmentDebug;
  7. // 初始化SDK
  8. [PHAISparring initializeWithConfig:config];
  9. return YES;
  10. }
  • 进入SDK业务页面

    每个陪练项目都会生成一个项目code,而智能陪练SDK业务依赖code,此处介绍通过WKWebView的代理拦截,获取到云学堂协议并解析处理,跳转到相应的智能陪练页面
  1. #import "PHAISparring/PHAISparringManager.h"
  2. - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
  3. NSLog(@"url = %@",navigationAction.request.URL.absoluteString.stringByRemovingPercentEncoding);
  4. // 判断是否为云学堂智能陪练业务协议
  5. if ([navigationAction.request.URL.absoluteString hasPrefix:@"yxtapp://biz.sparring"]) {
  6. // 解析协议参数
  7. NSDictionary *dic = [self getSparringCodeProtocolUrl:navigationAction.request.URL];
  8. NSString *name = dic[@"name"];
  9. NSString *code = dic[@"code"];
  10. NSString *isPreview = dic[@"isPreview"];
  11. // 处理是否预览
  12. if (isPreview) {
  13. PHAISparring.isPreview = [isPreview boolValue];
  14. } else {
  15. PHAISparring.isPreview = NO;
  16. }
  17. if ([name isEqualToString:@"yxt_app_sparring_start"]) {
  18. // 开始训练
  19. [PHAISparring startWithCode:code sender:self];
  20. }else if ([name isEqualToString:@"yxt_app_sparring_open"]) {
  21. // 进入智能陪练H5页面
  22. [PHAISparring openPageWithCode:code sender:self];
  23. }
  24. decisionHandler(WKNavigationActionPolicyCancel);
  25. return;
  26. }
  27. decisionHandler(WKNavigationActionPolicyAllow);
  28. }
  29. /// 解析协议参数
  30. /// @param url 协议地址
  31. - (NSDictionary *)getSparringCodeProtocolUrl:(NSURL *)url {
  32. NSString *paramStr = [[[url.query componentsSeparatedByString:@"&"] firstObject] stringByReplacingOccurrencesOfString:@"param=" withString:@""].stringByRemovingPercentEncoding;
  33. NSDictionary *paramDic = [NSJSONSerialization JSONObjectWithData:[paramStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
  34. return paramDic;
  35. }
  • SDK方法介绍

  1. // PHAISparringManager.h
  2. @interface PHAISparring : NSObject
  3. /// 初始化配置
  4. /// @param config 配置模型
  5. + (void)initializeWithConfig:(PHAISparringConfig *)config;
  6. /// 开始训练
  7. + (void)startWithCode:(NSString *)code sender:(UIViewController *)sender;
  8. /// 结束训练
  9. + (void)stopWithCompletion:(void (^ __nullable)(void))completion;
  10. /// 打开智能陪练h5页面
  11. + (void)openPageWithCode:(NSString *)code sender:(UIViewController *)sender;
  12. @end