本文介绍了iOS集成中可能出现的问题和解决方法。

调起无线认证SDK进入认证页面时,提示网络异常,请检查网络UNKNOWN_ERROR或者出现空白页

查看Xcode console。
  • SG ERROR = 1208、1215、1411
    • 如果您已经接入过实人认证无线SDK,且iOS SDK版本号<=2.1,那么请到控制台下载新版本的无线SDK(iOS SDK版本号>=2.2),并使用新下载SDK包中的所有的文件替换原来开发包里的对应文件。
      说明 您可以RPSDK.framework文件夹下的info.plist文件中查看CFRPSDKVersion。
    • 如果确认不存在上述情况,则说明当前开发包与在管理控制台下载SDK时上传包的BundleID不一致。请在管理控制台重新上传当前开发包,并使用新下载SDK中的yw_1222_*.jpg签名图片文件替换开发包中原有的文件。
  • SG ERROR = 1412、1225

    说明图片不存在。请确保SDK中的yw_1222_*.jpg签名图片正确地引入到了Copy Bundle Resource下。

项目中之前引入的组件与无线认证SDK中的组件(如SecurityGuardSDK、AliyunOSSiOS等)有重复。

  • 若SecurityGuardSDK组件有重复,删除低版本,但要保留两个版本的yw_1222_*.jpg签名图片文件。
  • 若AliyunOSSiOS等其他组件有重复,删除低版本即可。

项目中之前引入的SecurityEnvSDK组件与无线认证SDK中的SGMain组件报duplicate symbol冲突

SecurityEnvSDK组件是SGMain组件的早先版本,删除SecurityEnvSDK,但要保留两个组件的yw_1222_*.jpg签名图片文件。

出现编译失败报错

根据不同的报错信息,采取相应解决方案,具体说明如下。
  • 报错信息:duplicate symbol _OBJC_CLASS_$_xxx

    处理建议:接入方修改调用NebulaWK的方式,去除NebulaWK的依赖,改用WindVane内部的NebulaWK。

  • 报错信息:ld: symbol(s) not found for architecture arm64 (_OPEN_SECURITYBODY_ENV_XXX)

    处理建议:删除旧版本无线保镖,导入新版本库,并清空Xcode Derived Data,重新编译。

  • 报错信息:Undefined symbols for architecture x86_64:_OBJC_CLASS_$_RPSDK
    处理建议:添加以下预处理宏控制,仅在真机环境调用实人认证。
     #if TARGET_IPHONE_SIMULATOR // 实人认证不支持模拟器调试
    
                      #elif TARGET_OS_IPHONE // 真机
                     // 实人认证初始化
                      [RPSDK initialize:RPSDKEnvOnline];
                      // 进入认证
                     // [RPSDK start:rpCompleted:]
                     #endif

出现运行崩溃报错

根据不同的报错信息,采取相应解决方案,具体说明如下。
  • 报错信息:BUG IN CLIENT OF LIBLATFORM: Trying to recursively lock an os_unfair_lock
    处理建议:修改GrowingIO调用方式。setTrackWebView(false)全应用webview不抓取,针对需要抓取的webview,前去目标页面进行设置。
     GrowingIO.startWithConfiguration(MainApplication.getInstance(),
                   new Configuration().setApp(MainApplication.getInstance())
                   .trackAllFragments()
                   .setTrackWebView(false)
                   .setHashTagEnable(true)
                   .setChannel(CommonUtil.getAppChannel(MainApplication.getInstance())));
  • 报错信息:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' setObjectForKey: object cannot be nil (key: appName)

    处理建议:必须设置CFBundleName,即应用名称。

接入后导致应用网络请求失败

在RPSDK初始化以后,完成以下设置:
[[NSUserDefaults standardUserDefaults] setObject:@YES forKey:[NSString stringWithFormat:@"WebKitAll%@ccessFro%@eURLs", @"owFileA", @"mFil"]];

[[NSUserDefaults standardUserDefaults] setObject:@YES forKey:[NSString stringWithFormat:@"WebKitAll%@ccessFro%@eURLs", @"owUniversalA", @"mFil"]];

提示版本过低

必须设置CFBundleName,即应用名称。

第一次认证会出现几秒钟的延迟

Xcode10在调试模式下打开视频流时,会有10s左右延迟。断开调试模式后若无延时,则可以忽略此问题。

SG ERROR = 105、103

在Build Settings的Other Linker Flags中添加-ObjC