跳转至

iOS/tvOS 应用接入


通过收集各个 iOS 应用的指标数据,以可视化的方式分析各个 iOS 应用端的性能。

阅读路径

前置条件

注意

若已开通 RUM Headless 服务,前置条件已自动配置,可直接接入应用。

应用接入

  1. 进入用户访问监测 > 新建应用 > iOS
  2. 输入应用名称;
  3. 输入应用 ID;
  4. 选择应用接入方式:

    • 公网 DataWay:直接接收 RUM 数据,无需安装 DataKit 采集器。
    • 本地环境部署:满足前置条件后接收 RUM 数据。

安装

tvOS

源码地址https://github.com/GuanceCloud/datakit-ios

Demohttps://github.com/GuanceDemo/guance-app-demo

  1. 配置 Podfile 文件。

    • 使用 Dynamic Library

      use_frameworks!
      def shared_pods
        pod 'FTMobileSDK', '[latest_version]'
        # 如果需要采集 widget Extension 数据
        pod 'FTMobileSDK', :subspecs => ['Extension'] 
      end
      
      # 主工程
      target 'yourProjectName' do
        shared_pods
      end
      
      # Widget Extension
      target 'yourWidgetExtensionName' do
        shared_pods
      end
      

    • 使用 Static Library

      use_modular_headers!
      # 主工程
      target 'yourProjectName' do
        pod 'FTMobileSDK', '[latest_version]'
      end
      # Widget Extension
      target 'yourWidgetExtensionName' do
        pod 'FTMobileSDK', :subspecs => ['Extension'] 
      end
      

    • 将代码库下载到本地使用

      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]'
      end
      

      folder_path: FTMobileSDK.podspec 所在文件夹的路径。

      FTMobileSDK.podspec 文件:

      修改 FTMobileSDK.podspec 文件中的 s.versions.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 }
      end
      

      s.version:修改为指定版本,建议与 FTMobileSDK/FTMobileAgent/Core/FTMobileAgentVersion.h 中的 SDK_VERSION 一致。

      s.sourcetag => s.version

  2. Podfile 目录下执行 pod install 安装 SDK。

  1. 配置 Cartfile 文件。

    github "GuanceCloud/datakit-ios" == [latest_version]
    

  2. 更新依赖。

    根据您的目标平台(iOS 或 tvOS),执行相应的 carthage update 命令,并添加 --use-xcframeworks 参数以生成 XCFrameworks:

    • 对于 iOS 平台:

      carthage update --platform iOS --use-xcframeworks
      

    • 对于 tvOS 平台:

      carthage update --platform tvOS --use-xcframeworks
      

    生成的 xcframework 与普通的 Framework 使用方法相同。将编译生成的库添加到项目工程中。

    FTMobileAgent:添加到主项目 Target,支持 iOS 和 tvOS 平台。

    FTMobileExtension:添加到小组件 Widget Extension Target。

  3. TARGETS -> Build Setting -> Other Linker Flags 添加 -ObjC

  4. 使用 Carthage 集成,SDK 版本支持:

    FTMobileAgent:>=1.3.4-beta.2

    FTMobileExtension:>=1.4.0-beta.1

Using Xcode UI

  1. 选中 PROJECT -> Package Dependency ,点击 Packages 栏目下的 +

  2. 在弹出的页面的搜索框中输入 https://github.com/GuanceCloud/datakit-ios.git

  3. Xcode 获取软件包成功后,会展示 SDK 的配置页。

    Dependency Rule :建议选择 Up to Next Major Version

    Add To Project :选择支持的工程。

    填好配置后点击 Add Package 按钮,等待加载完成。

  4. 在弹窗 Choose Package Products for datakit-ios 中选择需要添加 SDK 的 Target,点击 Add Package 按钮,此时 SDK 已经添加成功。

    FTMobileSDK:添加到主项目 Target

    FTMobileExtension:添加到 Widget Extension Target

Using Package.swift

如果您的项目由 SPM 管理,将 SDK 添加为依赖项,添加 dependenciesPackage.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 。

添加头文件

//CocoaPods、SPM 
#import "FTMobileSDK.h"
//Carthage 
#import <FTMobileSDK/FTMobileSDK.h>
import FTMobileSDK

详细配置入口

高级场景

常见问题

关于崩溃日志分析

在开发时的 DebugRelease 模式下, 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 找回
  1. Xcode -> Window -> Organizer

  2. 选择 Archives 标签

  3. 找到发布的归档包,右键点击对应归档包,选择 Show in Finder操作

  4. 右键选择定位到的归档文件,选择 显示包内容 操作

  5. 选择 dSYMs 目录,目录内即为下载到的 dSYM 文件

通过 iTunes Connect 找回
  1. 登录App Store Connect
  2. 进入"我的App(My Apps)"
  3. 在 "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 中的全局变量。

文档评价

文档内容是否对您有帮助? ×