iOS/tvOS 应用接入¶
通过收集各个 iOS 应用的指标数据,以可视化的方式分析各个 iOS 应用端的性能。
阅读路径¶
- 首次接入:先看 快速开始
- 完整接入:继续阅读本文
- 初始化参数:查看 SDK 初始化、RUM 配置、Log 配置、Trace 配置
- 自定义能力:查看 自定义标签使用、自定义采集规则、数据采集脱敏
- 高级场景:查看“高级场景”分组下的专项页面
- 问题排查:查看 故障排查
前置条件¶
注意
若已开通 RUM Headless 服务,前置条件已自动配置,可直接接入应用。
- 安装 DataKit;
- 配置 RUM 采集器;
- DataKit 配置为公网可访问,并且安装 IP 地理信息库。
应用接入¶
- 进入用户访问监测 > 新建应用 > iOS;
- 输入应用名称;
- 输入应用 ID;
-
选择应用接入方式:
- 公网 DataWay:直接接收 RUM 数据,无需安装 DataKit 采集器。
- 本地环境部署:满足前置条件后接收 RUM 数据。
安装¶
源码地址:https://github.com/GuanceCloud/datakit-ios
Demo:https://github.com/GuanceDemo/guance-app-demo
-
配置
Podfile文件。-
使用 Dynamic Library
-
使用 Static Library
-
Podfile文件:use_modular_headers! # 主工程 target 'yourProjectName' do pod 'FTMobileSDK', :path => '[folder_path]' end # Widget Extension target 'yourWidgetExtensionName' do pod 'FTMobileSDK', :subspecs => ['Extension'] , :path => '[folder_path]' endfolder_path:FTMobileSDK.podspec所在文件夹的路径。FTMobileSDK.podspec文件:修改
FTMobileSDK.podspec文件中的s.version和s.source。Pod::Spec.new do |s| s.name = "FTMobileSDK" s.version = "[latest_version]" s.source = { :git => "https://github.com/GuanceCloud/datakit-ios.git", :tag => s.version } ends.version:修改为指定版本,建议与FTMobileSDK/FTMobileAgent/Core/FTMobileAgentVersion.h中的SDK_VERSION一致。s.source:tag => s.version
-
-
在
Podfile目录下执行pod install安装 SDK。
-
配置
Cartfile文件。 -
更新依赖。
根据您的目标平台(iOS 或 tvOS),执行相应的
carthage update命令,并添加--use-xcframeworks参数以生成 XCFrameworks:-
对于 iOS 平台:
-
对于 tvOS 平台:
生成的 xcframework 与普通的 Framework 使用方法相同。将编译生成的库添加到项目工程中。
FTMobileAgent:添加到主项目 Target,支持 iOS 和 tvOS 平台。FTMobileExtension:添加到小组件 Widget Extension Target。 -
-
在
TARGETS->Build Setting->Other Linker Flags添加-ObjC。 -
使用 Carthage 集成,SDK 版本支持:
FTMobileAgent:>=1.3.4-beta.2FTMobileExtension:>=1.4.0-beta.1
Using Xcode UI
-
选中
PROJECT->Package Dependency,点击Packages栏目下的 +。 -
在弹出的页面的搜索框中输入
https://github.com/GuanceCloud/datakit-ios.git。 -
Xcode 获取软件包成功后,会展示 SDK 的配置页。
Dependency Rule:建议选择Up to Next Major Version。Add To Project:选择支持的工程。填好配置后点击
Add Package按钮,等待加载完成。 -
在弹窗
Choose Package Products for datakit-ios中选择需要添加 SDK 的 Target,点击Add Package按钮,此时 SDK 已经添加成功。FTMobileSDK:添加到主项目 TargetFTMobileExtension:添加到 Widget Extension Target
Using Package.swift
如果您的项目由 SPM 管理,将 SDK 添加为依赖项,添加 dependencies到 Package.swift。
// 主项目
dependencies: [
.package(url: "https://github.com/GuanceCloud/datakit-ios.git",
.upToNextMajor(from: "[latest_version]"))
]
为您的 Targets 添加依赖
targets: [
.target(
name: "YourTarget",
dependencies: [
.product(name: "FTMobileSDK", package: "FTMobileSDK"),
]),
.target(
name: "YourWidgetExtensionTarget",
dependencies: [
.product(name: "FTMobileExtension", package: "FTMobileSDK"),
]),
]
注意:1.4.0-beta.1 及以上支持 Swift Package Manager 。
添加头文件¶
详细配置入口¶
高级场景¶
- 自定义标签使用
- 数据采集自定义规则
- 数据采集脱敏
- URLSession 自定义 Network 采集
- 动态配置
- 符号文件上传
- Widget Extension 数据采集
- WebView 数据监测
- tvOS 数据采集
常见问题¶
关于崩溃日志分析¶
在开发时的 Debug 和 Release 模式下, Crash 时捕获的线程回溯是被符号化的。 而发布包没带符号表,异常线程的关键回溯,会显示镜像的名字,不会转化为有效的代码符号,获取到的 crash log 中的相关信息都是 16 进制的内存地址,并不能定位崩溃的代码,所以需要将 16 进制的内存地址解析为对应的类及方法。
编译或打包后如何找到 dSYM 文件¶
- 在 Xcode 中,dSYM 文件通常与编译后的 .app 文件一起生成,并位于同一目录下。
- 如果对项目进行了归档,可以在 Xcode 的
Window菜单中选择Organizer,然后选择对应的归档文件。右键点击归档文件,选择Show in Finder”,在 Finder 中找到对应的.xcarchive文件。右键点击.xcarchive文件,选择Show Package Contents,然后进入dSYMs文件夹,即可找到对应的 dSYM 文件。
XCode 编译后没有生成 dSYM 文件?¶
XCode Release 编译默认会生成 dSYM 文件,而 Debug 编译默认不会生成,对应的 Xcode 配置如下:
Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File
开启了 bitCode 怎么上传符号表?¶
当您上传您的 bitcode App 到 App Store,在提交对话框里勾选声明符号文件(dSYM文件)的生成:
- 在配置符号表文件之前,需要从App Store中把该版本对应的dSYM文件下载回本地,然后用脚本根据输入参数处理上传符号表文件。
- 不需要将脚本集成到 Xcode 工程的 Target 了,也不要用本地生成的 dSYM 文件来生成符号表文件,因为本地编译生成的 dSYM 文件的符号表信息都被隐藏了。如果用本地编译生成的 dSYM 文件上传,还原出来的结果将是类似于“__hiden#XXX”这样的符号。
如何找回已发布到 App Store 的 App 对应的 dSYM 文件?¶
| 应用上传到App Store Connect的Distribution options | dSym文件 |
|---|---|
| Don’t include bitcode Upload symbols |
通过 Xcode 找回 |
| Include bitcode Upload symbols |
通过 iTunes Connect 找回 通过 Xcode 找回, 需要使用 .bcsymbolmap 去混淆处理。 |
| Include bitcode Don’t upload symbols |
通过 Xcode 找回, 需要使用 .bcsymbolmap 去混淆处理。 |
| Don’t include bitcode Don’t upload symbols |
通过 Xcode 找回 |
通过 Xcode 找回¶
-
Xcode -> Window -> Organizer -
选择
Archives标签 -
找到发布的归档包,右键点击对应归档包,选择
Show in Finder操作 -
右键选择定位到的归档文件,选择
显示包内容操作 -
选择
dSYMs目录,目录内即为下载到的 dSYM 文件
通过 iTunes Connect 找回¶
- 登录App Store Connect;
- 进入"我的App(My Apps)"
- 在 "App Store" 或 "TestFlight" 中选择某一个版本",点击 "构建版本元数据(Build Metadata)" 在此页面,点击按钮 "下载dSYM(Download dSYM)" 下载 dSYM 文件
.bcsymbolmap 去混淆处理¶
在通过 Xcode 找到 dSYM 文件时,可以看到 BCSymbolMaps 目录
打开终端并使用以下命令进行去混淆处理
xcrun dsymutil -symbol-map <BCSymbolMaps_path> <.dSYM_path>
添加全局变量避免冲突字段¶
为了避免自定义字段与 SDK 数据冲突,建议标签命名添加 项目缩写 的前缀,例如 df_tag_name,项目中使用 key 值可查询源码。SDK 全局变量中出现与 RUM、Log 相同变量时,RUM、Log 会覆盖 SDK 中的全局变量。






