コンテンツにスキップ

iOS/tvOS/macOS アプリケーションの統合


iOS、tvOS、macOS アプリケーションのメトリクスデータを収集し、Apple プラットフォーム上のアプリケーションのパフォーマンスを可視化して分析します。

参照パス

前提条件

注意

RUM Headless サービスが既に有効になっている場合、前提条件は自動的に設定されているため、アプリケーションをそのまま統合できます。

macOS Alpha に関する注意

SDK 1.6.6 以降では、GuanceSDK メイン SDK が iOS、tvOS、macOS をカバーしています。macOS は現在 Alpha バージョンであり、すべての iOS 機能がサポートされるわけではありません。macOS を統合する前に、テスト環境で初期化、RUM、ログ、トレース、データ同期などの主要な機能を検証してください。Session Replay と Widget Extension は macOS ではサポートされていません。

アプリケーションの統合

  1. リアルユーザーモニタリング(RUM) > アプリケーションを作成 に進み、iOS、tvOS、または macOS アプリケーションタイプを選択します。
  2. アプリケーション名を入力します。
  3. アプリケーション ID を入力します。
  4. アプリケーション統合方法を選択します。

    • パブリックネットワーク DataWay:DataKit コレクターをインストールせずに、RUM データを直接受信します。
    • ローカル環境デプロイ:前提条件を満たした上で RUM データを受信します。

インストール

tvOS

ソースコードアドレスhttps://github.com/GuanceCloud/datakit-ios

デモhttps://github.com/GuanceDemo/guance-app-demo

CocoaPods の今後のメンテナンスについて

CocoaPods 公式発表 によると、CocoaPods は 2026 年 12 月 2 日以降、trunk を読み取り専用に切り替え、新しい Podspec を受け付けなくなる予定です。既に公開されている Pod バージョンと既存のビルドはすぐに無効になるわけではありませんが、CocoaPods 経由での新バージョン、互換性修正、セキュリティアップデートの入手が制限される可能性があります。そのため、新規統合や SDK のアップグレード時には、Swift Package Manager を使用した統合を推奨します。

Xcode UI を使用する場合

  1. Xcode で File -> Add Package Dependency... を選択します。

  2. 表示されたページの検索ボックスに https://github.com/GuanceCloud/datakit-ios.git を入力します。

  3. Xcode がパッケージを解析したら、依存バージョンルールを選択します。Up to Next Major Version を推奨します。

    追加先のプロジェクトを選択し、Add Package をクリックして、読み込みが完了するまで待ちます。

  4. パッケージの解析が完了したら、Package Products リストで各ターゲットに追加する製品を選択し、Add Package をクリックします。

    GuanceSDK:メインプロジェクトのターゲットに追加します。iOS、tvOS、macOS をサポートします。macOS は Alpha バージョンです。

    GuanceWidgetExtension:iOS Widget Extension ターゲットにのみ追加します。

Package.swift を使用する場合

プロジェクト自体が Swift Package である場合、SDK を依存関係として追加するには、Package.swiftdependencies に追加します。

// メインプロジェクト
dependencies: [
.package(url: "https://github.com/GuanceCloud/datakit-ios.git",
.upToNextMajor(from: "[latest_version]"))
]

ターゲットに依存関係を追加します。

targets: [
    .target(
        name: "YourTarget",
        dependencies: [
            .product(name: "GuanceSDK", package: "GuanceSDK"),
        ]),
    .target(
        name: "YourWidgetExtensionTarget",
        dependencies: [
            .product(name: "GuanceWidgetExtension", package: "GuanceSDK"),
        ]),
    ]

注意:1.4.0-beta.1 以降で Swift Package Manager をサポートしています。SDK 1.6.6 以降では、SPM の製品名が GuanceSDKGuanceWidgetExtensionGuanceSessionReplay に変更されています。旧製品名からの移行については、移行ガイド を参照してください。

  1. Cartfile ファイルを設定します。

    github "GuanceCloud/datakit-ios" == [latest_version]
    
  2. 依存関係を更新します。

    ターゲットプラットフォーム(iOS、tvOS、macOS)に応じて、対応する carthage update コマンドを実行し、--use-xcframeworks パラメータを追加して XCFrameworks を生成します。

    • iOS プラットフォームの場合:

      carthage update --platform iOS --use-xcframeworks
      
    • tvOS プラットフォームの場合:

      carthage update --platform tvOS --use-xcframeworks
      
    • macOS プラットフォームの場合:

      carthage update --platform macOS --use-xcframeworks
      

    生成された xcframework は、通常の Framework と同じ方法で使用します。コンパイルされたライブラリをプロジェクトに追加します。

    GuanceSDK:メインプロジェクトのターゲットに追加します。iOS、tvOS、macOS をサポートします。macOS は Alpha バージョンです。

    GuanceWidgetExtension:iOS ウィジェット Widget Extension ターゲットにのみ追加します。

  3. TARGETS -> Build Setting -> Other Linker Flags-ObjC を追加します。

  4. Carthage を使用した統合における SDK バージョンサポート:

    GuanceSDK:>=1.6.6

    GuanceWidgetExtension:>=1.6.6

CocoaPods の適用に関する注意

CocoaPods 公式発表 によると、CocoaPods は 2026 年 12 月 2 日以降、trunk を読み取り専用に切り替え、新しい Podspec を受け付けなくなる予定です。新規プロジェクトや依存管理方法の見直しを検討中のプロジェクトでは、上記の Swift Package Manager を使用した SDK 統合を優先してください。

  1. Podfile ファイルを設定します。

    • Dynamic Library を使用する場合

      use_frameworks!
      def shared_pods
        pod 'GuanceSDK', '[latest_version]'
        # Widget Extension データを収集する場合
        pod 'GuanceSDK/WidgetExtension', '[latest_version]'
      end
      
      # メインプロジェクト
      target 'yourProjectName' do
        shared_pods
      end
      
      # Widget Extension
      target 'yourWidgetExtensionName' do
        shared_pods
      end
      
    • Static Library を使用する場合

      use_modular_headers!
      # メインプロジェクト
      target 'yourProjectName' do
        pod 'GuanceSDK', '[latest_version]'
      end
      # Widget Extension
      target 'yourWidgetExtensionName' do
        pod 'GuanceSDK/WidgetExtension', '[latest_version]'
      end
      
    • コードベースをローカルにダウンロードして使用する

      Podfile ファイル:

      use_modular_headers!
      # メインプロジェクト
      target 'yourProjectName' do
        pod 'GuanceSDK', :path => '[folder_path]'
      end
      # Widget Extension
      target 'yourWidgetExtensionName' do
        pod 'GuanceSDK/WidgetExtension', :path => '[folder_path]'
      end
      

      folder_pathGuanceSDK.podspec が配置されているフォルダのパスです。

      GuanceSDK.podspec ファイル:

      GuanceSDK.podspec ファイル内の s.versions.source を変更します。

      Pod::Spec.new do |s|
        s.name         = "GuanceSDK"
        s.version      = "[latest_version]"
      s.source       = { :git => "https://github.com/GuanceCloud/datakit-ios.git", :tag => s.version }
      end
      

      s.version:指定されたバージョンに変更します。Sources/Agent/Core/FTSDKVersion.hSDK_VERSION と一致させることを推奨します。

      s.sourcetag => s.version

Widget Extension の互換性のある記述方法:

SDK 1.6.6 以降では、GuanceSDK/WidgetExtension の使用を推奨します。以前のプロジェクトで pod 'FTMobileSDK', :subspecs => ['Extension'] を使用していた場合、GuanceSDK にアップグレード後も、互換性のある subspec を引き続き使用できます。

target 'yourWidgetExtensionName' do
  pod 'GuanceSDK', :subspecs => ['Extension']
end
  1. Podfile ディレクトリで pod install を実行して SDK をインストールします。

互換性に関する注意:SDK 1.6.6 以降では、メイン Pod 名が GuanceSDK に変更されています。古い FTMobileSDK を使用した統合方法は、1.6.6 以前のバージョンに対応しています。1.6.6 以降にアップグレードする場合は、移行ガイド を参照して依存関係名を変更してください。

ヘッダーファイルの追加

#import <GuanceSDK/GuanceSDK.h>
import GuanceSDK

詳細設定のエントリ

高度なシナリオ

よくある質問

クラッシュログの分析について

開発時の Debug モードと Release モードでは、クラッシュ時にキャプチャされるスレッドバックトレースはシンボル化されています。 一方、リリースパッケージにはシンボルテーブルが含まれていないため、異常スレッドの重要なバックトレースはイメージ名のみが表示され、有効なコードシンボルに変換されません。取得した クラッシュログ の関連情報はすべて 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 プロジェクトのターゲットに統合する必要はありません。また、ローカルで生成された dSYM ファイルを使用してシンボルテーブルファイルを生成しないでください。ローカルでコンパイル生成された dSYM ファイルのシンボルテーブル情報はすべて隠蔽されているためです。ローカルコンパイルで生成された dSYM ファイルをアップロードすると、復元結果は「__hiden#XXX」のようなシンボルになります。

App Store に公開済みのアプリに対応する 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 データと競合するのを避けるため、タグ名には プロジェクト略称 のプレフィックスを追加することを推奨します。例:custom_tag_name。プロジェクトで使用する key 値は、ソースコード で確認できます。SDK のグローバル変数に RUM やログと同じ変数が存在する場合、RUM やログが SDK のグローバル変数を上書きします。

フィードバック

このページは役に立ちましたか?