All Products
Search
Document Center

Quick Tracking:flutter SDK

Last Updated:Jun 29, 2025

Deskripsi Integrasi Plug-in Statistik Quick Tracking SDK Flutter

Mengintegrasikan Plug-in Flutter

Persiapan Lingkungan

qt_common_sdk: ^2.1.0

| --- Bergantung pada versi iOS asli 1.5.8.PX

| --- Bergantung pada versi Android asli 1.6.3.PX

Mengintegrasikan SDK secara manual

  • Unduh pustaka proyek git: flutter-ananlytics-plugin, lalu hapus direktori tersembunyi .git dari direktori proyek.

  • Salin folder android, ios, dan lib serta file konfigurasi pubspec.yaml di bawah direktori root proyek ini ke proyek Flutter Anda.

Tambahkan dependensi plug-in ke file pubspec.yaml proyek Flutter Anda.

# Dependensi lokal

qt_common_sdk:
 path: ../

Dependensi Online

Tambahkan dependensi ke file pubspec.yaml.

# Dependensi online
dependencies:
  qt_common_sdk: ^2.1.0

Impor aturan arah masuk

import 'package:qt_common_sdk/qt_common_sdk.dart';

Inisialisasi SDK Plug-in

Mengintegrasikan ApsaraVideo MediaBox SDK untuk Android

Tambahkan kelas App ke proyek host Android dari proyek Flutter Anda dengan mengacu pada file App.java dalam proyek contoh (example/android/app/src/main/java/com/aliyun/qt_common_sdk_example/App.java). Pastikan kelas ini merupakan subkelas dari io.flutter.app.FlutterApplication. Dalam fungsi siklus hidup onCreate kelas App, panggil metode preInit pra-inisialisasi dari SDK statistik asli dan masukkan parameter appkey dan channel.

4f

Selain itu, tambahkan atribut "android:name" ke konfigurasi aplikasi dalam file manifes AndroidManifest.xml proyek host Android, dengan nilai berupa kelas App yang baru ditambahkan. Gambar berikut menunjukkan hasilnya.

5f

Perhatikan bahwa parameter appkey dan channel yang dimasukkan dalam pra-inisialisasi harus sama dengan parameter pertama (Android appkey) dan ketiga (Android channel) yang dimasukkan dalam fungsi inisialisasi formal SDK QTCommonSdk.initCommon yang dipanggil dalam kode dart proyek flutter.

Untuk memenuhi persyaratan Kebijakan Privasi, pengembang harus memastikan bahwa dalam skenario cold start pertama setelah aplikasi diinstal, API QTCommonSdk.initCommon dari plug-in Flutter dapat dipanggil untuk menginisialisasi SDK hanya setelah pengguna aplikasi menyetujui otorisasi privasi.

Anda dapat memanggil API QTCommonSdk.initCommon untuk menginisialisasi SDK saat menginisialisasi halaman pertama Flutter.


Mengintegrasikan ApsaraVideo MediaBox SDK untuk iOS

1. Pernyataan Kepatuhan

Anda harus memberi tahu pengguna bahwa Anda menggunakan layanan SDK. Tambahkan ketentuan berikut ke Kebijakan Privasi:

"Integrasi SDK produk kami, SDK perlu mengumpulkan kode identifikasi perangkat Anda (IDFA/IDFV/OPENUDID/GUID/) untuk menyediakan layanan analisis statistik, dan mengkalibrasi akurasi data laporan melalui lokasi geografis untuk menyediakan kemampuan anti-cheat dasar."

2. Inisialisasi Kepatuhan

Untuk memastikan bahwa aplikasi Anda memenuhi persyaratan kepatuhan Kementerian Industri dan Teknologi Informasi (MIIT) setelah mengintegrasikan SDK statistik, pastikan fungsi inisialisasi awal dipanggil untuk menginisialisasi SDK statistik setelah pengguna membaca Kebijakan Privasi Anda dan memberikan otorisasi selama cold start pertama aplikasi. Dalam hal ini, SDK mengumpulkan informasi perangkat dan melaporkan data. Sebaliknya, jika pengguna tidak menyetujui otorisasi Kebijakan Privasi, fungsi inisialisasi tidak dapat dipanggil.

/**Inisialisasi semua produk komponen
 @ param appKey Appkey yang diajukan oleh pengembang.
 @ param channel Pengenal saluran. Anda bisa mengatur nil untuk "App Store".
 */
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;

Setelah Aplikasi mendapatkan otorisasi pengguna dari "Kebijakan Privasi", pengembang harus memastikan bahwa fungsi inisialisasi dipanggil untuk cold start Aplikasi berikutnya.


Deskripsi API Plug-in

Komentar berikut tentang setiap API ditandai dengan "Spesifik Android" atau "Spesifik iOS" untuk API atau parameter. Harap perhatikan perbedaannya. API atau parameter yang tidak ditentukan berlaku untuk kedua platform Android dan iOS.

 ///
 /// Tetapkan nama domain utama dan alternatif untuk melaporkan log statistik. Fungsi ini harus dipanggil sebelum SDK menginisialisasi pemanggilan fungsi. 
 ///
 /// @param primaryDomain String nama domain utama.
 /// @param standbyDomain String alamat penerimaan nama domain cadangan untuk mengunggah log menggunakan nama domain cadangan. Parameter ini bisa null atau string kosong. Jika parameter ini kosong, SDK secara otomatis menetapkan nama domain utama sebagai nama domain cadangan. 
 ///
 ///
 static void setCustomDomain(String primaryDomain, String standbyDomain)

 ///
 /// Inisialisasi
 ///
 /// @param androidAppkey String appkey Android yang diajukan oleh pengembang. Spesifik Android, masukkan
 /// @param iosAppkey String appkey ios yang diajukan oleh pengembang.   Spesifik iOS, masukkan
 /// @param channel String pengenal saluran. Anda bisa mengatur nil untuk "App Store".
 ///
 ///
 static Future<dynamic> initCommon(String androidAppkey, String iosAppkey, String channel)

 ///
 /// Nomor versi aplikasi kustom. Secara default, nomor versi diperoleh. Anda hanya dapat mengatur parameter ini sekali. Kami sarankan Anda memanggil aplikasi sebelum semua pemanggilan API.
 ///
 /// @param appVersion String nomor versi kustom.
 /// @param appVersionCode int nomor versi aplikasi Android. Parameter ini unik untuk Android.
 ///
 static void setAppVersion (String appVersion, int appVersionCode) 

 ///
 /// Tetapkan apakah akan mengeluarkan log debugging SDK di konsol.
 ///
 /// @param bFlag bool tetapkan ke flash (tidak ada output log); Tetapkan ke true untuk mengeluarkan informasi log untuk referensi debugging. 
 /// Secara default, saklar ini dimatikan di SDK. Anda harus mematikan saklar log sebelum aplikasi diluncurkan secara resmi. 
 ///
 ///
 static void setLogEnabled (bool bFlag)

 ///
 /// Acara kustom
 ///
 /// @param event String ID acara.
 /// @param properties Map parameter kustom.
 ///
 static void onEvent(String event, Map<String,dynamic> properties)

 ///
 /// @param event String ID acara.
 /// @param pageName String nama halaman.
 /// @param properties Map parameter kustom.
 ///
 static void onEventWithPage(String event,String pageName, Map<String,dynamic> properties)

 ///
 /// Log masuk statistik akun
 ///
 /// @param userID String ID pengguna
 ///
 ///
 static void onProfileSignIn(String userID)

 ///
 /// Log keluar statistik akun
 ///
 ///
 static void onProfileSignOff ()

 ///
 /// Statistik halaman: Dipanggil saat halaman mulai ditampilkan.
 ///
 /// @param viewName String nama halaman
 ///
 ///
 static void onPageStart(String viewName)

 ///
 /// Statistik halaman: dipanggil saat halaman menghilang
 ///
 /// @param viewName String nama halaman
 ///
 ///
 static void onPageEnd(String viewName)

 ///
 /// Tetapkan properti halaman.
 ///
 /// @param pageName String nama halaman
 /// @param properties Map parameter kustom
 ///
 static void setPageProperty(String pageName, Map<String,dynamic> properties)

 ///
 /// Daftarkan atribut global
 ///
 /// @param properties Map parameter kustom
 ///
 ///
 static void registerGlobalProperties(Map<String,dynamic> properties)

 ///
 /// Hapus atribut global.
 ///
 /// @param propertyName String kunci parameter kustom.
 ///
 ///
 static void unregisterGlobalProperty(String propertyName)

 ///
 /// Dapatkan atribut global.
 ///
 ///
 static Future<String>?  get getGlobalProperties async

 ///
 /// Dapatkan nilai atribut global.
 ///
 ///
 static Future<dynamic>?  getGlobalProperty(String propertyName) async

 ///
 /// Bersihkan atribut global
 ///
 static void clearGlobalProperties() 

 ///
 /// Lewati statistik halaman saat ini.
 ///
 /// @param pageName String nama halaman
 ///
 ///
 static void skipMe(String pageName) 
 
 ///
 /// Tetapkan properti halaman.
 ///
 /// @param pageName String nama halaman
 /// @param properties Map parameter kustom
 ///
 static void setPageProperty(String pageName, Map<String,dynamic> properties)
 
 //
 // QT JS SDK menggunakan plug-in flutter_webview_plugin untuk mengirim statistik lapisan JS ke API JavascriptChannel lapisan flutter.
 // Panggil operasi ini. Untuk informasi lebih lanjut tentang kode sampel, lihat baris 15 hingga 23 di example/lib/main.dart. 
 //
 static void onJSCall(String msg)
 
 ///
 /// Jika aplikasi ditarik secara paksa dengan membunuh prosesnya sendiri, 
 /// Anda perlu memanggil API ini sebelum bunuh diri. API ini unik untuk Android.
 ///
 ///
 static void onKillProcess()

Petunjuk Penggunaan Plug-in flutter_webview_plugin dengan Jembatan QT JS SDK

Saat proyek Flutter menggunakan komunitas flutter_webview_plugin (versi dukungan 0.4.0 +) + H5 untuk pengembangan hibrida, jika SDK statistik versi JS QuickTracking diintegrasikan di halaman H5, statistik QT JS SDK dapat dikirim ke SDK statistik asli Android/iOS menggunakan API onJSCall, dan SDK statistik asli melaporkan statistik JS SDK.

Rujuk baris 15 hingga 23 dari proyek contoh example/lib/main.dart. Daftarkan jembatan JS bernama 'Umeng4AplusFlutter' untuk plug-in flutter_webview_plugin, lalu panggil QTCommonSdk.onJSCall(message.message) dalam fungsi callback onMessageReceived: (JavascriptMessage message);

Kode sampel berikut dapat ditemukan di file example/lib/main.dart.

// Tentukan objek saluran JavaScript bernama 'Umeng4AplusFlutter'.
final Set<JavascriptChannel> jsChannels = [
   JavascriptChannel(
       name: 'Umeng4AplusFlutter',
       onMessageReceived: (JavascriptMessage message) {
         // print(message.message);
         QTCommonSdk.onJSCall(message.message);
       }),
].toSet();

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

// Daftarkan objek jembatan js saat objek plug-in webview flutter diaktifkan.
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)', // mencegah pengalihan ke twitter saat pengguna mengklik ikonnya di situs web flutter
								 );

Catatan: Anda perlu memanggil QTConfigure.init untuk menginisialisasi plug-in. Appkey dapat dilihat di halaman Manajemen> Manajemen Aplikasi> Daftar Aplikasi di latar belakang statistik, atau pilih aplikasi di Produk Saya> Pengaturan> Informasi Aplikasi untuk melihat Appkey.