威胁感知iOS SDK 开发指南
SDK | 版本 | 日期 |
---|
iOS | WXGZSDK 1.9.4.2 | 2019-10
要求
iOS 8.0 和 Xcode 10 以上
一、简介
威胁感知系统基于大数据技术,通过实时数据采集、数据分析和数据应用,帮助企业闭环APP在运营环境中可能遇到的各种威胁。并将移动威胁态势通过可视化的数据报告呈现给企业运营者。
威胁分类 | 威胁危害 | 威胁分析模型 | 规避方式 |
---|---|---|---|
环境风险 | 导致崩溃或用户数据泄露等 | 模拟器、越狱/root、风险进程、恶意应用、LIBC 内核破坏、域名风险和系统签名破坏等 | 禁止运行客户端 |
业务威胁 | 欺诈、薅羊毛等 | 位置欺诈、系统加速、设备复用和自定义组合分析等 | 预警并中断操作 |
基础攻击 | 影响正常运行或窃取核心数据等 | 框架、调试、注入、病毒木马、设备篡改、界面劫持和域名劫持等 | 中断并上报 |
二、接入前期准备
(1)获取 AppKey 和 AcceptId
AppKey 和 AcceptId 是接入 SDK 的必要参数,需要到管理平台创建应用以获取参数值。对于本地化部署,则需要在本地服务器上进行登录管理页面分配 AppKey 等参数。(注:签约后即分配用户管理平台账号、尚未分配账户的用户请先联系工作人员进行分配后再行登录)具体操作步骤如下:登录管理平台,在左侧菜单选择【系统配置】>【应用管理】。
1、打开应用管理模块,在右侧点击上传应用。
2、提交完成,应用列表点击查看 AppKey 和 AcceptId。
3、策略推送功能。如使用策略推送功能,需提交苹果开发和发布推送p12证书导出并设置密码交由工作人员对接。如下图5所示
(2)SDK和Demo下载
注:使用CocoaPods的用户可以通过如下方式集成:
pod 'WXGZSDK', '~> 1.9.4.2'
注意(在终端更新pod之前搜索)
rm ~/Library/Caches/CocoaPods/search_index.json
Pod setup
登录管理平台,在左侧菜单“系统配置”选项下选择“SDK 管理”,选择数据采集SDK下载iOS版本。
三、集成步骤
把下载下来的SDK包拖进工程内(包含:OperationToolSDK.framework、 WXGZ_SDK.framework、OperationToolSDK.bundle、WXGZ_SDK.bundle)
(1)添加SDK和依赖库
(2)工程配置
1、在工程文件中选择 Build Setting,在"Other Linker Flags"中加入"-ObjC"(注意区分大小写)。
2、在你的工程文件中选择 Build Setting,在"Enable Bitcode"栏选择 NO。见下图
3、设置推送(如果使用策略推送功能)
-
打开项目--->TARGETS--->Capabilities,将 Push Notifications 的开关如图所示
-
后台模式方法项目对应 TARGETS-Capabilities-Background Modes-Remote Notifications 具体设置方法如图所示
(3)数据采集SDK对接
四、常见问题
(1)网络请求失败
如果你的 App 基于 iOS 9.0 编译,那么为了适配 iOS 9.0 中的 App Transport Security(ATS)对 HTTP 的限制,在 App 对应的 Info.plist 中添加如下配置。(如果采用 https 方式则无需进行配置)
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
(2)授权失败处理
首次启动用户拒绝推送或定位授权后,在 AppDelegate.m 的 didFinishLaunchingWithOptions 方法内加入 SDK 提供接口方法,可设置每次启动 App 时开启检测并提示去设置的授权弹框。(注:默认授权弹窗只在首次运行 App 弹出一次,特定的授权类型在设置 YES 之后,如果检测到未授权,每次启动 App 都会弹窗提示用户去设置)具体设置如图所示:
(3)崩溃分析日志异常
发生崩溃以后,在管理中心并没有找到崩溃日志。可能是由于以下4种情况造成:
- 崩溃以后没有重新启动app,因为崩溃的时候来不及发送崩溃日志给服务器。所以需要重新启动app来进行网络请求发送日志到服务器。
- iOS 捕获异常的函数NSSetUncaughtExceptionHandler()被其他的崩溃收集类覆盖。导致威胁感知SDK捕获不到NSSetUncaughtExceptionHandler的回调消息。解决的办法是找出其他的崩溃收集类,再其捕获异常的时候先判断是否已经有其他的handle已经设置。可以先将该handle保存,然后将在收集完成异常以后回调该handle。如图所示
- 没有连接网络,导致日志没法上报。
- 发生崩溃的时候app还是断点状态,导致无法保存崩溃信息,放开断点即可完成崩溃信息收集。