日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

React Native SDK

集成說明

QuickTracking React Native SDK是基于QuickTracking 原生客戶端埋點SDK上的擴展,封裝了QT埋點常用的api,如全局屬性、頁面屬性、自定義事件等。

React Native SDK集成

npm線上地址:react-native-quicktracking-analytics-module

下載npm包到項目中

# npm
npm install react-native-quicktracking-analytics-module

# yarn
yarn add react-native-quicktracking-analytics-module

# pnpm
pnpm add react-native-quicktracking-analytics-module

引入SDK環(huán)境變量

import { QT } from "react-native-quicktracking-analytics-module";

Android 基座集成

進入控制臺

進入QT后臺,點擊“管理控制臺”

image

集成應用

找到需要集成埋點的應用:進入“應用列表”,選擇所需組織,點擊操作中的“詳情或者去集成”

image

Maven地址配置

在工程 build.gradle 配置腳本中 buildscript 和 allprojects 段中添加 sdk maven 倉庫地址

buildscript {
    repositories {
    google()
    jcenter()
    maven { url 'https://repo1.maven.org/maven2/' }
  }
  dependencies {
      classpath 'com.android.tools.build:gradle:3.4.0'}
      // NOTE: Do not place your application dependencies here; they belong
      // in the individual module build.gradle files
  }
}
allprojects {
    repositories {
    google()
    jcenter()
    maven { url 'https://repo1.maven.org/maven2/' }
  }
}

組件引用

在工程app對應build.gradle配置腳本dependencies段中,添加集成所需要的依賴

dependencies {
    implementation fileTree(include:['*.jar'], dir:'libs')

    //QuickTracking統(tǒng)計分析SDK
    implementation 'com.lydaas.qtsdk:qt-px-common:1.6.3.PX'
}

請注意:如果已經(jīng)通過package.json 添加了 QuickTracking ReactNative SDK 的依賴,則不需要再單獨集成QuickTracking Android原生SDK

埋點驗證配置

在Android.manifest中,找到MainActivity對應的activity標簽,并將以下代碼粘貼進去,appkey換成自己的

//1.喚起碼默認為"atm.該app對應的appkey",不可改變
//2.請使用單獨intent-filter,和其他intent-filter并列
//不要將以下代碼填入其他intent-filter里;

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="atm.appkey" />
</intent-filter>

配置權(quán)限

統(tǒng)計SDK需要宿主APP授予如下權(quán)限:

權(quán)限

用途

ACCESS_NETWORK_STATE

檢測聯(lián)網(wǎng)方式,在網(wǎng)絡(luò)異常狀態(tài)下避免數(shù)據(jù)發(fā)送,節(jié)省流量和電量。

READ_PHONE_STATE(可選)

獲取用戶設(shè)備的IMEI,通過IMEI對用戶進行唯一標識,以便提供統(tǒng)計分析服務。

ACCESS_WIFI_STATE

獲取WIFI mac地址,在平板設(shè)備或電視盒子上,無法通過IMEI標識設(shè)備,我們會將WIFI mac地址作為用戶的唯一標識,以便正常提供統(tǒng)計分析服務。

INTERNET

允許應用程序聯(lián)網(wǎng)和發(fā)送統(tǒng)計數(shù)據(jù)的權(quán)限,以便提供統(tǒng)計分析服務。

下面給出AndroidManifest.xml清單文件示例:

<manifest ……> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application ……>
</manifest>

混淆配置

如果您的應用使用了代碼混淆,請?zhí)砑尤缦屡渲?,以避免Quick Tracking SDK被錯誤混淆導致SDK不可用。

-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}

-keep class com.quick.qt.** {*;}
-keep class rpk.quick.qt.** {*;}

-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

SDK需要引用導入工程的資源文件,通過了反射機制得到資源引用文件R.java,但是在開發(fā)者通過proguard等混淆優(yōu)化工具處理apk時,proguard可能會將R.java刪除,如果遇到這個問題,請?zhí)砑尤缦屡渲茫?/p>

-keep public class [您的應用包名].R$*{
    public stac final int 

初始化SDK

  1. 域名設(shè)置

務必在初始化之前設(shè)置私有化環(huán)境收數(shù)域名。

/**
 * 設(shè)置上傳統(tǒng)計日志的主域名和備用域名。SDK會優(yōu)先將統(tǒng)計數(shù)據(jù)上報到主域名,失敗的情況下會再嘗試將數(shù)據(jù)上報到備用域名。
 * 主域名primaryDomain或不能傳入null或者空串,否則會拋出SdkDomainUndefined運行時異常。
 */
QtConfigure.setCustomDomain("收數(shù)域名", null); 
  1. 預初始化

請在宿主App的Application.onCreate函數(shù)中調(diào)用基礎(chǔ)組件庫初始化函數(shù)。

//SDK預初始化函數(shù)不會采集設(shè)備信息,也不會向QT后臺上報數(shù)據(jù)。
//preInit預初始化函數(shù)耗時極少,不會影響App首次冷啟動用戶體驗
QtConfigure.preInit(this,"appkey","Channel");

3.正式初始化

//正式初始化SDK,務必調(diào)用
public static void init(Context context,String appkey,String channel,int deviceType,String pushSecret);

參數(shù)

含義

備注

appkey

QT為當前應用平臺頒發(fā)的唯一標識。

  1. 入?yún)⒌腶ppkey一定要與QT后臺保持一致;

  2. 該appkey會跟隨每一條事件日志進行上報,用于QT的應用平臺數(shù)據(jù)區(qū)分標識

channel

app投放的應用市場

QT分析平臺的“系統(tǒng)屬性”中“升級渠道”的數(shù)據(jù)來源

deviceType

QtConfigure.DEVICE_TYPE_PHONE

默認填寫QtConfigure.DEVICE_TYPE_PHONE即可

pushSecret

廢棄字段,填寫空即可

廢棄字段,填寫空即可

示例:

public class MainApplication extends Application implements ReactApplication {
    @Override
    public void onCreate() {
    super.onCreate();
    
    //SDK預初始化函數(shù)不會采集設(shè)備信息,也不會向QT后臺上報數(shù)據(jù)。
    //preInit預初始化函數(shù)耗時極少,不會影響App首次冷啟動用戶體驗
    QtConfigure.preInit(this,"您的appkey","aliyun");
    //正式初始化SDK,務必調(diào)用
    QtConfigure.init(this,"您的appkey","aliyun",QtConfigure.DEVICE_TYPE_PHONE, "");
  }

Android統(tǒng)計分析SDK集成方式請參考文檔:Android SDK

iOS 基座集成

使用CocoaPods集成

進入iOS工程目錄

cd ios && pod install && cd .. 

SDK初始化并集成appKey

為保證您的App在集成統(tǒng)計SDK之后,能夠滿足工信部相關(guān)合規(guī)要求,您應確保App首次冷啟動時,在用戶閱讀您的《隱私政策》并取得用戶授權(quán)之后,才調(diào)用正式初始化函數(shù)初始化統(tǒng)計SDK,此時SDK才會真正采集設(shè)備信息并上報數(shù)據(jù)。反之,如果用戶不同意《隱私政策》授權(quán),則不能調(diào)用初始化函數(shù)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  
    /** 初始化所有組件產(chǎn)品
      * @param appKey 開發(fā)者在QT申請的appkey.
      * @param channel 渠道標識,可設(shè)置nil表示"App Store".
      */
    [QTConfigure initWithAppkey:@"應用的appKey" channel:@"安裝渠道"];
 
    return YES;
}

一旦App獲取到《隱私政策》的用戶授權(quán),后續(xù)的App冷啟動,開發(fā)者應該保證調(diào)用到初始化函數(shù)。

配置收數(shù)域名

#import <QTCommon/UMConfigure.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  
    /** 設(shè)置上報統(tǒng)計日志的主域名和備用域名。此函數(shù)必須在SDK初始化函數(shù)調(diào)用之前調(diào)用。
      * @param primaryDomain 傳日志的主域名收數(shù)地址,參數(shù)不能為null或者空串。
      * @param standbyDomain 上傳日志備用域名收數(shù)地址,參數(shù)可以為null或者空串,若此參數(shù)為空,SDK內(nèi)部會自動將主域名設(shè)置為備用域名。
      */
    [QTConfigure setCustomDomain:@"主收數(shù)域名" standbyDomain:@"備用收數(shù)域名"];

    return YES;
}

按需引入日志組件

引入統(tǒng)計所需組件庫(在更新SDK時,您可以直接使用 pod update 命令進行直接更新)

pod 'UMCCommonLog'

Podfile示例

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '12.0'

target 'qt_reactnative_demo' do
  config = use_native_modules!
  
  //QuickTracking 統(tǒng)計分析 SDK
  pod 'QTCommon', '~> 1.5.8.PX'//需要指定版本號
   
  //可在項目中加入 “基礎(chǔ)庫-日志庫” 中的 UMCCommonLog 進行開發(fā)調(diào)試。
  pod 'UMCCommonLog'
  
  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => flags[:hermes_enabled],
  )

  use_flipper!()

  post_install do |installer|
    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

請注意:如果已經(jīng)通過package.json 添加了 QuickTracking ReactNative SDK 的依賴,則不需要再單獨集成QuickTracking iOS原生SDK

開啟日志打印

#import <QTCommon/UMConfigure.h>
#import <UMCommonLog/UMCommonLogHeaders.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  
    [UMCommonLogManager setUpUMCommonLogManager];
    [QTConfigure setLogEnabled:YES];
  
    return YES;
}

埋點驗證配置

添加您的 URL Scheme 到項目中,URL Scheme 位于項目設(shè)置 target -> 選項卡 Info - > URL Types。

填入的scheme:atm.yourappkey。

image.png

在AppDelegate中調(diào)用函數(shù)[QTMobClick handleUrl:url]來接收 URL

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    if ([QTMobClick handleUrl:url]) {
        return YES;
    }
    return YES;
}

iOS統(tǒng)計分析SDK集成方式請參考文檔:iOS SDK

埋點驗證操作請參考文檔:埋點驗證詳細指南

埋點API

SDK初始化

正式初始化

務必調(diào)用,請務必在用戶同意隱私政策后,再初始化SDK。

function init(appKey: string, channel: string): void

參數(shù)

含義

appKey

QT后臺提供的唯一應用key值

channel

下載渠道

示例

QT.init('appkey', 'quicktracking');

用戶賬號上報

用戶登錄

該值的上傳對應產(chǎn)品中“登錄用戶”:計算“登錄用戶”數(shù),就是計算下述API上傳值的去重數(shù)

function profileSignIn(ID: string, provider?: string): void

參數(shù)

含義

ID

用戶賬號,長度小于64字節(jié)。 該值的上傳對應產(chǎn)品中“登錄用戶”:計算“登錄用戶”數(shù),就是計算該用戶賬號的去重數(shù)

provider

無效字段,傳空即可。

用戶登出

賬號登出時需調(diào)用此接口,調(diào)用之后不再發(fā)送賬號相關(guān)內(nèi)容。

function profileSignOff(): void

示例

QT.profileSignIn('用戶ID');
QT.profileSignOff();

用戶屬性上傳

使用事件編碼固定為"$$_user_profile"的自定義事件上傳,該事件所攜帶的事件屬性會被作為用戶屬性放在用戶表中。

function sendEvent(eventId: string, params: any): void

參數(shù)

含義

eventId

當前統(tǒng)計的事件ID

params

對當前事件的參數(shù)描述,定義為“參數(shù)名:參數(shù)值”的“<鍵-值>”對

請注意:用戶屬性上傳一定要在用戶賬號上報后。

示例:

QT.onProfileSignIn("張三");

const user = {
  gender: "male",
  age: "8"
}
QT.sendEvent("$$_user_profile", user);

上述上傳的業(yè)務含義為:張三 男 8歲

全局屬性

全局屬性為每一個事件都會攜帶的屬性

注冊全局屬性

function registerGlobalProperty(globalProperty: any): void

參數(shù)

含義

globalProperty

要注冊的全局屬性,定義為“屬性名:屬性值”的“<鍵-值>”對。為單層對象結(jié)構(gòu),不支持多層嵌套。

注意:

  1. 屬性名、string類型的屬性值,只支持大小寫字母、數(shù)字及下劃線。

  2. 在Android中,屬性值不支持JavaScript的boolean類型,需要手動在JS中轉(zhuǎn)為0、1。

  3. 在Android中,對于全局屬性值為null或undefined的場景,底層Android sdk會過濾這個全局屬性字段,如需要空值分析場景,需自定義默認空值

  4. 在iOS中,全局屬性值不支持null和undefined,需要手動過濾。

示例:

QT.registerGlobalProperty({
    name: 'MyApp',
    description: 'this is a app',
    aBoolean: 1, //boolean類型需傳為0或1,
    aNull: '', //null或undefined類型需傳空字符串
    //默認為number類型,對于返回值為null或undefined場景,需業(yè)務自定義數(shù)值型默認空值
    aNumber: 66, 
});

刪除特定的全局屬性

function unregisterGlobalProperty(propertyName: string): void

參數(shù)

含義

propertyName

要刪除的全局屬性名

示例:

 QT.unregisterGlobalProperty('name'); // 刪除全局屬性name

獲取特定的全局屬性

async function getGlobalProperty(propertyName: string): Promise<any>

參數(shù)

含義

propertyName

要獲取的全局屬性名

示例:

await QT.getGlobalProperty('name'); // 獲取全局屬性name,返回 {name: "MyApp"}

獲取所有全局屬性

async function getGlobalProperties(propertyName: string): Promise<any>

示例:

await QT.getGlobalProperties(); // 獲取所有全局屬性

清除所有全局屬性

function clearGlobalProperties(): void

示例:

QT.clearGlobalProperties(); // 所有全局屬性都被清除(慎用)

頁面瀏覽事件埋點

開發(fā)者如果希望對頁面路徑和頁面停留時長進行采集和統(tǒng)計??梢酝ㄟ^調(diào)用該接口手動埋點

function onPageStart(pageName: string): void
function onPageEnd(pageName: string): void

參數(shù)

含義

pageName

頁面編碼

示例:

QT.onPageStart('MainPage');
QT.onPageEnd('MainPage');

請注意:

onPageStart 是SDK記錄頁面進入的信息,onPageStart不會上報事件,只有調(diào)用onPageEnd的時候才會上報頁面瀏覽事件。

onPageStart和onPageEnd必須成對調(diào)用,且傳值的pageName需要保持一致,如果沒有onPageEnd或者onPageEnd與onPageStart傳值的pageName不一致,則onPageStart記錄的信息不會生效。

頁面屬性上傳

支持給當前頁面附加自定義屬性

function uploadPageProperties(pageName: string, params: EventParams): void

參數(shù):

參數(shù)

含義

pageName

目標頁面名(頁面編碼),必須和當前頁面名一致。如不一致,函數(shù)執(zhí)行無效。

params

對當前事件的參數(shù)描述,定義為"參數(shù)名:參數(shù)值" 的 "<鍵-值>"對。為單層對象結(jié)構(gòu),不支持多層嵌套。

示例:

QT.uploadPageProperties('detail_page', { test: 1 })

請注意:

  1. 該接口必須在onPageStart和onPageEnd之間調(diào)用。

  2. 屬性名、string類型的屬性值,只支持大小寫字母、數(shù)字及下劃線。

  3. 在Android中,屬性值不支持JavaScript的boolean類型,需要手動在JS中轉(zhuǎn)為0、1。

  4. 在Android中,對于全局屬性值為null或undefined的場景,底層Android sdk會過濾這個全局屬性字段,如需要空值分析場景,需自定義默認空值

  5. 在iOS中,全局屬性值不支持null和undefined,需要手動過濾。

自定義事件埋點

自定義事件可以用于追蹤用戶行為,記錄行為發(fā)生的具體細節(jié)。

使用 sendEvent 接口進行事件的統(tǒng)計,接口如下:

/**
  * 自定義事件埋點
  * @param eventId 當前統(tǒng)計的事件編碼
  * @param params 對當前事件的參數(shù)描述,定義為“參數(shù)名:參數(shù)值”的“<鍵-值>”對
  * @param pageName 事件編碼
  */
function sendEvent(eventId: string, params?: any, pageName?: string): void

參數(shù)

含義

eventId

為當前統(tǒng)計的事件編碼。

params

對當前事件的參數(shù)描述,定義為“參數(shù)名:參數(shù)值”的“<鍵-值>對”。為單層對象結(jié)構(gòu),不支持多層嵌套。

pageName

當前統(tǒng)計事件的頁面編碼

示例:

// 攜帶事件參數(shù)的自定義事件
QT.sendEvent(
  'event1',
  {
    name: 'quick tracking',
    method: 'func',
  },
);

// 攜帶事件參數(shù)和頁面編碼的自定義事件
QT.sendEvent(
  'event2',
  {
    name: 'quick tracking',
    method: 'func',
  },
  'main-page'
);

備注:

  • 多參數(shù)類型事件能滿足原來計算事件/計數(shù)事件的分析場景;

  • 對于計算型事件不同的參數(shù)類型對應不同的計算方式,總共可以分為兩大類,數(shù)值型和字符型

  • 數(shù)字型:支持累加值、最大值、最小值、平均值和去重數(shù)計算

  • 字符型:支持去重數(shù)計算

請注意:

同全局屬性,事件屬性在Android和iOS不同平臺上,也有著類型處理的差異:

  1. 在Android中,不支持JavaScript的boolean類型,需要手動在JS中轉(zhuǎn)為0、1。

  2. 在Android中,對于全局屬性值為null或undefined的場景,底層Android sdk會過濾這個全局屬性字段,如需要空值分析場景,需自定義默認空值

  3. 在iOS中,全局屬性值不支持null和undefined,需要手動過濾。

橋接事件埋點

橋接事件用于h5橋接RN的場景,使用此接口將H5日志發(fā)送至App中。

/**
  * 橋接事件埋點
  * @param data H5轉(zhuǎn)發(fā)事件的日志體
  */
function sendEventForH5(data: string): void

參數(shù)

含義

data

H5轉(zhuǎn)發(fā)事件的日志體

示例:

const content = data.nativeEvent.data;
QT.sendEventForH5(content);

RN App中嵌入h5頁面(RN橋接模式)

H5集成 QuickTracking Web SDK

該步驟請參考:Web SDK

轉(zhuǎn)發(fā)H5端發(fā)送的日志給React Native WebView

<script charset="UTF-8">
  ...
  // sdk接入及配置部分
  ...
  
  //轉(zhuǎn)發(fā)頁面自定義事件(點擊、元素曝光、其他)
  aplus_queue.push({
    action: 'aplus.aplus_pubsub.subscribe',
    arguments: ['mw_change_hjlj', function (content) {
      var eventData = content && content.what_to_send && content.what_to_send.hjljdataToUmNative;
      if (/*iOS環(huán)境*/) {
        window.ReactNativeWebView.postMessage(JSON.stringify(eventData), '*'); 
      } else {
        window.ReactNativeWebView.postMessage(JSON.stringify(eventData));
      }
    }]
  })
  
  aplus_queue.push({
    action: 'aplus.aplus_pubsub.subscribe',
    arguments: ['mw_change_pv', function (content) {
      var pvData = content && content.what_to_send && content.what_to_send.pvdataToUmNative;
      if (/*iOS環(huán)境*/) {
        window.ReactNativeWebView.postMessage(JSON.stringify(pvData), '*');    
      } else {
        window.ReactNativeWebView.postMessage(JSON.stringify(pvData));
      }
    }]
  })
</script>

React Native WebView接收消息并調(diào)用QT SDK上報日志

import * as React from 'react'
import { WebView } from 'react-native-webview';
import { QT } from 'react-native-quicktracking-analytics-module';
import { Platform, SafeAreaView } from 'react-native';

export default function WebPage() {
  const onMessage = (data) => {
    try {
      const content = data.nativeEvent.data;
      QT.sendEventForH5(content);
    } catch (error) {
      console.log('webview message error:', error);
    }
  };
  
  return (
    <SafeAreaView style={{ flex: 1 }}>
    	<WebView
      	...
        onMessage={onMessage}
      	...
      />
    </SafeAreaView>
  );
}

RN 全埋點

需要 QuickTracking ReactNative SDK 2.0.0版本及以上支持

頁面瀏覽事件自動采集

考慮到React Navigation庫自身豐富的場景支持以及在社區(qū)的影響力,在SDK的頁面瀏覽事件自動采集能力上直接借助了React Navigation開放的接口能力,示例如下:

import {QT} from 'react-native-quicktracking-analytics-module';
import {
  NavigationContainer,
  useNavigationContainerRef,
} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';

const Stack = createNativeStackNavigator();

const App = () => {
  const navigationRef = useNavigationContainerRef();
  const routeNameRef = useRef('');

  return (
    <NavigationContainer
      ref={navigationRef}
      onReady={() => {
        routeNameRef.current = currentRouteName;
        // 設(shè)置頁面編碼
        QT.onPageStart(currentRouteName);
      }}
      onStateChange={() => {
        const previousRouteName = routeNameRef.current;
        const currentRouteName = navigationRef.getCurrentRoute()?.name;
        // 按需設(shè)置頁面屬性(可選)
        QT.uploadPageProperties(previousRouteName, {
          test_page_p_1: 1,
          test_page_p_2: "test"
        });
        // 采集頁面瀏覽事件
        QT.onPageEnd(previousRouteName);
        if (currentRouteName) {
          if (previousRouteName !== currentRouteName) {
            // 更新新的頁面編碼
            QT.onPageStart(currentRouteName);
            routeNameRef.current = currentRouteName;
          }
        }
      }}
    >
      ...
    </NavigationContainer>
  )
}

控件點擊事件自動采集

在待埋點項目路徑下執(zhí)行node命令

node node_modules/react-native-quicktracking-analytics-module/src/hook.js -run

注:如果需要恢復原始文件,可以執(zhí)行 reset 命令

node node_modules/react-native-quicktracking-analytics-module/src/hook.js -reset

忽略RN控件全埋點采集

由于存在混合開發(fā)的場景,支持單獨關(guān)閉React Native控件點擊事件的自動采集,在待埋點項目的package.json中增加QTSDKConfig配置:

{
  "name": "reactnative_demo",
  "QTSDKConfig": {
    "enableAutoCLK": true
  }
}

enableAutoCLK字段取值含義:

  • true 開啟RN控件自動采集

  • false 關(guān)閉RN控件自動采集

注:開啟RN控件點擊事件自動采集功能需要配合上述 node 命令使用

開啟iOS控件點擊事件自動采集

#import <QTCommon/UMConfigure.h>
#import <QTCommon/MobClick.h>
#import <UMCommonLog/UMCommonLogHeaders.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    // 全埋點原生控件點擊自動采集功能開啟
    [QTMobClick setAutoEventEnabled:YES];
    
    return YES;
}

開啟Android控件點擊事件自動采集

import com.quick.qt.analytics.QtTrackAgent;

public class MainApplication extends Application implements ReactApplication {
  ...
    
  @Override
  public void onCreate() {
    super.onCreate();
    ...
    // 全埋點原生控件點擊自動采集功能開啟
    QtTrackAgent.setAutoEventEnabled(true);
    ...
  }

  ...
}

設(shè)置ReactNative控件自定義屬性

注:僅支持React Native控件,如TouchableHighlight、TouchableOpacity、Pressable等等

<Pressable
  onPress={()=>{}}
  qtParams={{
    pressable: "press_1",
  }}
>
  {({pressed}) => (
    <Text style={styles.text}>
      {pressed ? '點下了Pressable控件!' : 'Pressable 控件'}
    </Text>
  )}
</Pressable>

<TouchableHighlight 
  onPress={()=>{}} 
  qtParams={{aTouchableHighlight: 1, b: 2}}>
  <Text>TouchableHighlight 控件</Text>
</TouchableHighlight>

<TouchableOpacity 
  onPress={()=>{}} 
  qtParams={{aTouchableOpacity: 1, b: 2}}>
  <Text>TouchableOpacity 控件</Text>
</TouchableOpacity>

<TouchableWithoutFeedback 
  onPress={()=>{}} 
  qtParams={{aTouchableWithoutFeedback: 1, b: 2}}>
  <Text>TouchableWithoutFeedback 控件</Text>
</TouchableWithoutFeedback>

忽略單個控件的自動采集

在事件屬性中增加 ignore字段等于true

<TouchableHighlight 
  onPress={()=>{}} 
  qtParams={{
    aTouchableHighlight: 1, 
    b: 2,
    ignore: true
  }}>
  <Text>TouchableHighlight 控件</Text>
</TouchableHighlight>