すべてのプロダクト
Search
ドキュメントセンター

Quick Tracking:flutter SDK

最終更新日:Jun 08, 2025

Quick Tracking Statistics SDK Flutter プラグイン統合の説明

Flutter プラグインを統合する

環境の準備

qt_common_sdk: ^2.1.0

| --- ネイティブ iOS 1.5.8.PX バージョンに依存

| --- ネイティブ Android 1.6.3.PX バージョンに依存

SDK を手動で統合する

  • プロジェクト git ライブラリ flutter-ananlytics-plugin をダウンロードし、プロジェクトディレクトリを削除します。 git 隠しディレクトリ。

  • このプロジェクト ルートディレクトリ の下の android、ios、および lib フォルダと pubspec.yaml 構成ファイルを flutter プロジェクトにコピーします。

flutter プロジェクトの pubspec.yaml ファイルにプラグインの依存関係を追加します。

# ローカル依存関係

qt_common_sdk:
 path: ../

オンライン依存関係

pubspec.yaml ファイルに依存関係を追加します。

# オンライン依存関係
dependencies:
  qt_common_sdk: ^2.1.0

インバウンドルール をインポートする

import 'package:qt_common_sdk/qt_common_sdk.dart';

プラグイン SDK の初期化

Android 用 ApsaraVideo MediaBox SDK を統合する

このプロジェクトのサンプル Android ホストプロジェクトの App.java ファイル(example/android/app/src/main/java/com/aliyun/qt_common_sdk_example/App.java)を参照して、flutter プロジェクトの Android ホストプロジェクトに App クラスを追加します。 このクラスは io.flutter.app.FlutterApplication クラスのサブクラスである必要があります。 App クラスの onCreate ライフサイクル 関数 で、ネイティブ統計 SDK の事前初期化メソッド QtConfigure.preInit を呼び出し、appkey パラメータと channel パラメータを渡します。

4f

さらに、Android ホストプロジェクトの AndroidManifest.xml マニフェストファイル のアプリケーション構成に "android:name" 属性 を追加する必要があります。その値は新しく追加された App クラスです。 次の図に結果を示します。

5f

事前初期化で渡される appkey パラメータと channel パラメータは、flutter プロジェクトの dart コードで呼び出される SDK 正式初期化 関数 QTCommonSdk.initCommon に渡される最初のパラメータ(Android appkey)と 3 番目のパラメータ(Android channel)と同じである必要があります。

プライバシーポリシーの要件を満たすために、開発者は、アプリケーションのインストール後の最初のコールドスタート シナリオ で、アプリケーションユーザーがプライバシー認証に同意した後にのみ、Flutter プラグインの QTCommonSdk.initCommon API を呼び出して SDK を初期化できることを確認する必要があります。

Flutter の最初のページを初期化するときに、QTCommonSdk.initCommon API を呼び出して SDK を初期化できます。


iOS 用 ApsaraVideo MediaBox SDK を統合する

1. コンプライアンスステートメント

SDK サービス を選択したことをユーザーに通知する必要があります。 プライバシーポリシーに次の条項を追加します。

「当社の製品統合 SDK、SDK は、統計分析 サービス を提供するためにデバイス識別コード(IDFA/IDFV/OPENUDID/GUID/)を収集し、地理的な位置情報を通じて レポート データの精度を調整して、基本的な不正防止機能を提供する必要があります。」

2. コンプライアンスの初期化

統計 SDK を統合した後にアプリが情報産業省(MIIT)のコンプライアンス要件を満たせるようにするには、アプリの最初のコールドスタート時に、ユーザーがプライバシーポリシーを読み、ユーザーの認証を取得した後に、初期初期化 関数 が呼び出されて統計 SDK が初期化されることを確認する必要があります。 この場合、SDK はデバイス情報を収集し、データを レポート します。 逆に、ユーザーがプライバシーポリシー認証に同意しない場合、初期化 関数 を呼び出すことはできません。

/**すべてのコンポーネント製品を初期化する
 @ param appKey 開発者が申請した appkey。
 @ param channel チャンネル識別子。 nil を「App Store」に設定できます。
 */
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;

アプリが「プライバシーポリシー」のユーザー認証を取得したら、開発者は、後続のアプリのコールドスタートに対して初期化 関数 が呼び出されることを確認する必要があります。


プラグイン API の説明

各 API の以下のコメントには、API または パラメーター に「Android 特有」または「iOS 特有」のマークが付いています。 区別に注意してください。 指定されていない API または パラメーター は、Android と iOS の両方に共通です。

 ///
 /// 統計ログを レポート するためのプライマリ ドメイン名 と代替 ドメイン名 を設定します。 この 関数 は、SDK が 関数 呼び出しを初期化する前に呼び出す必要があります。
 ///
 /// @param primaryDomain String プライマリ ドメイン名。
 /// @param standbyDomain String バックアップ ドメイン名 を使用してログをアップロードするためのバックアップ ドメイン名 の受信アドレス。 パラメーター は null または空の 文字列 にすることができます。 この パラメーター が空の場合、SDK はプライマリ ドメイン名 をバックアップ ドメイン名 として自動的に設定します。
 ///
 ///
 static void setCustomDomain(String primaryDomain, String standbyDomain)

 ///
 /// 初期化
 ///
 /// @param androidAppkey String 開発者が申請した Android appkey。 Android 特有、入力
 /// @param iosAppkey String 開発者が申請した ios appkey。 iOS 特有、入力
 /// @param channel String チャンネル識別子。 nil を「App Store」に設定できます。
 ///
 ///
 static Future<dynamic> initCommon(String androidAppkey, String iosAppkey, String channel)

 ///
 /// カスタムアプリの バージョン番号。 デフォルト では、バージョン番号 が取得されます。 この パラメーター は 1 回だけ設定できます。 すべての API 呼び出しの前にアプリを呼び出すことをお勧めします。
 ///
 /// @param appVersion String カスタム バージョン番号。
 /// @param appVersionCode int Android アプリケーション の バージョン番号。 この パラメーター は Android 特有です。
 ///
 static void setAppVersion (String appVersion, int appVersionCode) 

 ///
 /// コンソール に SDK の デバッグ ログを出力するかどうかを設定します。
 ///
 /// @param bFlag bool フラッシュに設定(ログは出力されません)。 デバッグ リファレンス のログ情報を出力するには true に設定します。
 /// デフォルト では、このスイッチは SDK でオフになっています。 アプリを正式に起動する前に、ログスイッチをオフにする必要があります。
 ///
 ///
 static void setLogEnabled (bool bFlag)

 ///
 /// カスタム イベント
 ///
 /// @param event String イベント ID。
 /// @param properties Map カスタム パラメーター。
 ///
 static void onEvent(String event, Map<String,dynamic> properties)

 ///
 /// @param event String イベント ID。
 /// @param pageName String ページ名。
 /// @param properties Map カスタム パラメーター。
 ///
 static void onEventWithPage(String event,String pageName, Map<String,dynamic> properties)

 ///
 /// アカウント統計 ログイン
 ///
 /// @param userID String ユーザーの ID
 ///
 ///
 static void onProfileSignIn(String userID)

 ///
 /// アカウント統計ログアウト
 ///
 ///
 static void onProfileSignOff ()

 ///
 /// ページ統計:ページの表示が開始されたときに呼び出されます。
 ///
 /// @param viewName String ページ名
 ///
 ///
 static void onPageStart(String viewName)

 ///
 /// ページ統計:ページが非表示になったときに呼び出されます
 ///
 /// @param viewName String ページ名
 ///
 ///
 static void onPageEnd(String viewName)

 ///
 /// ページ プロパティ を設定します。
 ///
 /// @param pageName String ページ名
 /// @param properties Map カスタム パラメーター
 ///
 static void setPageProperty(String pageName, Map<String,dynamic> properties)


 ///
 /// グローバル 属性 を登録する
 ///
 /// @param properties Map カスタム パラメーター
 ///
 ///
 static void registerGlobalProperties(Map<String,dynamic> properties)

 ///
 /// グローバル 属性 を削除します。
 ///
 /// @param propertyName String カスタム パラメーター キー。
 ///
 ///
 static void unregisterGlobalProperty(String propertyName)

 ///
 /// グローバル 属性 を取得します。
 ///
 ///
 static Future<String>?  get getGlobalProperties async

 ///
 /// グローバル 属性値 を取得します。
 ///
 ///
 static Future<dynamic>?  getGlobalProperty(String propertyName) async

 ///
 /// グローバル 属性 をクリアする
 ///
 static void clearGlobalProperties() 

 ///
 /// 現在のページ統計をスキップします。
 ///
 /// @param pageName String ページ名
 ///
 ///
 static void skipMe(String pageName) 
 
 ///
 /// ページ プロパティ を設定します。
 ///
 /// @param pageName String ページ名
 /// @param properties Map カスタム パラメーター
 ///
 static void setPageProperty(String pageName, Map<String,dynamic> properties)
 
 //
 // QT JS SDK は flutter_webview_plugin プラグインを使用して、JS レイヤー統計を flutter レイヤー JavascriptChannel API に送信します。
 // この 操作 を呼び出します。 サンプルコードの詳細は、example/lib/main.dart の 15 ~ 23 行目をご参照ください。
 //
 static void onJSCall(String msg)
 
 ///
 /// アプリケーション が自身の プロセス を強制終了することによって不適切に終了した場合、
 /// 自殺を実行する前にこの API を呼び出す必要があります。 この API は Android 特有です。
 ///
 ///
 static void onKillProcess()

QT JS SDK ブリッジ を備えた flutter_webview_plugin プラグインの使用手順

flutter プロジェクトがコミュニティ flutter_webview_plugin(サポート バージョン 0.4.0 +)+ H5 をハイブリッド開発に使用する場合、QuickTracking JS バージョン 統計 SDK が H5 ページに統合されている場合、QT JS SDK 統計は onJSCall API を使用して Android/iOS ネイティブ統計 SDK に送信でき、ネイティブ統計 SDK は JS SDK 統計を レポート します。

サンプルプロジェクト example/lib/main.dart の 15 ~ 23 行目を参照する必要があります。 flutter_webview_plugin プラグインに「Umeng4AplusFlutter」という名前の JS ブリッジ を登録し、onMessageReceived: (JavascriptMessage message) コールバック関数 で QTCommonSdk.onJSCall(message.message) を呼び出します。

次のサンプルコードは、example/lib/main.dart ファイルにあります。

// 「Umeng4AplusFlutter」という名前の JavaScript ブリッジ チャンネル コールバック オブジェクト を定義します。
final Set<JavascriptChannel> jsChannels = [
   JavascriptChannel(
       name: 'Umeng4AplusFlutter',
       onMessageReceived: (JavascriptMessage message) {
         // print(message.message);
         QTCommonSdk.onJSCall(message.message);
       }),
].toSet();

//..........

// flutter webview プラグイン オブジェクト が有効になっているときに js ブリッジ オブジェクト を登録します。
flutterWebViewPlugin.launch(
                   selectedUrl,
                   javascriptChannels: jsChannels,
                   rect: Rect.fromLTWH(
                        0.0, 0.0, MediaQuery.of(context).size.width, 300.0),
                   userAgent: kAndroidUserAgent,
                   invalidUrlRegex:
                        r'^(https).+(twitter)', // ユーザーが flutter ウェブサイトでアイコンをクリックしたときに twitter にリダイレクトされないようにします
								 );

注: QTConfigure.init を呼び出してプラグインを初期化する必要があります。 Appkey は、統計 バックグラウンド の管理> アプリケーション 管理> アプリケーション 管理> アプリケーション リストページで表示するか、マイ プロダクト>設定>アプリケーション 情報で アプリケーション を選択して Appkey を表示できます。