全部產品
Search
文件中心

Application Real-Time Monitoring Service:SDK配置參考

更新時間:Dec 11, 2025

ARMS使用者體驗監控提供一系列SDK配置項,讓您能夠通過設定參數來滿足額外需求。本文介紹Flutter應用常用的SDK配置。

啟動配置

start方法是AlibabaCloudRUM Flutter 外掛程式的核心啟動方法,負責初始化整個 Flutter 外掛程式監控系統並啟動應用程式。

Future<void> start(Widget topLevelWidget, {Function()? beforeRunApp}) async

參數

說明

參數限制

失敗結果

topLevelWidget

Flutter的根Widget

非空

介面調用失敗

beforeRunApp

回呼函數,在 runApp() 執行之前調用,用於執行一些初始化操作。

可選,如果設定了該參數,則必須在該回呼函數中主動調用WidgetsFlutterBinding.ensureInitialized()

-

樣本:

AlibabaCloudRUM().start(
  // 根 Widget
  MyApp(),
  beforeRunApp: () async => {
    // 在當前函數結束前,必須要調用下面這個方法
    WidgetsFlutterBinding.ensureInitialized(),
    // 其他商務邏輯
    // ...
    },
);

列印錯誤資訊

當SDK捕獲到Flutter異常時,會預設調用FlutterError.dumpErrorToConsole輸出錯誤資訊到控制台,您可以通過setDumpError方法開啟或關閉。

void setDumpError(bool enable)

參數

說明

參數限制

失敗結果

enable

設定是否輸出錯誤資訊到控制台。

取值:

  • true

  • false

-

樣本:

// 禁止輸出錯誤資訊到控制台
AlibabaCloudRUM().setDumpError(false);  

Flutter錯誤回調

由於Flutter對錯誤的監控無法逐層傳遞,導致AlibabaCloudRUM外掛程式對同步、非同步介面進行監控後,應用內原有的錯誤監聽會失效。因此,Flutter外掛程式提供了統一的錯誤回調介面。

void onRUMErrorCallback(bool callback(Object? error, StackTrace? stack, bool isAsync))

回呼函數入參:

參數

類型

說明

error

Object

錯誤原因。

stack

StackTrace

可選,錯誤堆棧。

isAsync

Bool

可選,是否為非同步錯誤。

回呼函數傳回值:

類型

說明

Bool

是否繼續處理錯誤。

true:SDK繼續處理錯誤並上報。

false:SDK停止處理該錯誤。

樣本:

  AlibabaCloudRUM().onRUMErrorCallback((error, stack, isAsync) {
    // 處理error事件
    // ...
    // logger.d('debuggg error: $error, stack: $stack');

    // 返回true,讓SDK上報該錯誤
    return true;
  });

讀取裝置Id

SDK或預設產生一個deviceId,您可以通過getDeviceId介面讀取裝置Id。

Future<String?> getDeviceId() async

樣本:

AlibabaCloudRUM().getDeviceId().then(((value) => {print("deviceId: ${value}")}));

自訂使用者名稱稱

SDK支援設定與使用者相關的資訊,從而完成資料分析與實際使用者相關聯的需求情境。

Future<void> setUserName(String userName)

參數

說明

參數限制

失敗結果

userName

使用者名稱稱標識

字串可為null或空串。

字串小於等於256,且不包含特殊字元,只允許數字、字母、英文半形冒號(:)、空格、正斜線(/)、底線(_)、英文半形串連號(-)、英文半形句號(.)和@。

介面調用失敗,當次設定無效。

樣本:

AlibabaCloudRUM().setUserName("xxxxx");

自訂使用者擴充資訊

SDK支援設定與使用者相關的資訊,從而完成資料分析與實際使用者相關聯的需求情境。

  • 設定使用者擴充資訊,為覆寫入模式,調用該方法會導致歷史設定的使用者擴充資訊被覆蓋。

    Future<void> setUserExtraInfo(Map<String, dynamic> extraInfo) async

    參數

    說明

    參數限制

    失敗結果

    extraInfo

    使用者擴充資訊

    Map可為空白或空集。轉JSON後長度在7000字元以內,否則介面調用失敗。

    介面調用失敗,當次設定無效

    樣本:

    AlibabaCloudRUM().setUserExtraInfo({"shopId": "xxxxx", "shopName": "yyyyy"});
  • 追加使用者擴充資訊,追加模式。

    Future<void> addUserExtraInfo(Map<String, dynamic> extraInfo) async

    參數

    說明

    參數限制

    失敗結果

    extraInfo

    使用者擴充資訊

    Map可為空白或空集。轉JSON後長度在7000字元以內,否則介面調用失敗。

    介面調用失敗,當次設定無效

    樣本:

    AlibabaCloudRUM().addUserExtraInfo({"userId": "11111111"});

自訂全域擴充資訊

SDK支援設定與使用者相關的資訊,從而完成資料分析與實際使用者相關聯的需求情境。

  • 設定全域擴充資訊,為覆寫入模式,調用該方法會導致歷史設定的使用者擴充資訊被覆蓋。

    Future<void> setExtraInfo(Map<String, dynamic> extraInfo) async

    參數

    說明

    參數限制

    失敗結果

    extraInfo

    全域擴充資訊

    Map可為空白或空集。轉JSON後長度在7000字元以內,否則介面調用失敗。

    介面調用失敗,當次設定無效

    樣本:

    AlibabaCloudRUM().setExtraInfo({"global_key": "global_value", "global_key2": "global_value2"});
  • 追加全域擴充資訊,追加模式。

    Future<void> addExtraInfo(Map<String, dynamic> extraInfo) async

    參數

    說明

    參數限制

    失敗結果

    extraInfo

    全域擴充資訊

    Map可為空白或空集。轉JSON後長度在7000字元以內,否則介面調用失敗。

    介面調用失敗,當次設定無效

    樣本:

    AlibabaCloudRUM().addExtraInfo({"global_userId": "2222222222"});

自訂異常

調用自訂異常介面,並傳入相應的參數,可完成自訂異常資料的統計功能。

Future<void> setCustomException(String exceptionType, String causedBy, String errorDump)

參數

說明

參數限制

失敗結果

exceptionType

異常類型(必要)

字串長度大於0且小於等於256。

介面調用失敗,當次設定無效。

causedBy

異常原因(必要)

字串小於等於512,超長會截取。

不涉及

errorDump

異常資訊(可選)

字串可為null或空串。

字串小於等於10000,超長會截取。

不涉及

樣本:

AlibabaCloudRUM().setCustomException("custom exception type", 
    "caused by customer", 
    "Custom error dump");

自訂事件

SDK支援上報自訂事件。調用相應的介面,並傳入相應的參數,可完成自訂事件數目據的統計功能。

Future<void> setCustomEvent(String name, {String? group, String? snapshots, double? value, Map<String, String>? attributes})

參數

說明

參數限制

失敗結果

name

事件名稱(必要)

字串小於等於512,超長會截取。

介面調用失敗,當次設定無效。

group

事件分組(可選)

字串可為null或空串。

字串小於等於256,超長會截取。

不涉及

snapshots

事件快照(可選)

字串可為null或空串。

字串小於等於7000,超長截取。

不涉及

value

事件值(可選)

Double類型。

不涉及

attributes

kv儲存資訊(可選)

轉JSON後長度在7000字元以內。

不涉及

樣本:

AlibabaCloudRUM().setCustomEvent("search_shop",
    group: "shop",
    snapshots: 'Search: ${search.toString()}',
    value: 1,
    attributes: {"search": "xxxxx"});

自訂日誌

SDK支援上報自訂日誌資訊。調用相應的介面,並傳入相應的參數,可完成自訂日誌資料的統計功能。

Future<void> setCustomLog(String logInfo, {String? name, String? snapshots, String? level, Map<String, String>? attributes})

參數

說明

參數限制

失敗結果

logInfo

日誌資訊(必要)

字串長度大於0且小於等於10000,超長截取。

介面調用失敗,當次設定無效

name

日誌名稱(可選)

字串長度大於0且小於等於256

不涉及

snapshots

日誌快照(可選)

字串可為null或空串。

字串小於等於7000,超長會截取。

不涉及

level

日誌等級(可選)

字串長度大於0且小於等於256,預設為INFO。

不涉及

attributes

日誌附加資訊(可選)

Map可為空白或空集。

轉JSON後,字串長度與logInfo共用,否則介面調用失敗。

不涉及

樣本:

AlibabaCloudRUM().setCustomLog("2024-08-20 14:00:05 Print shopinfo info.",
    name: "shop",
    snapshots: 'Shop: ${shop.toString()}',
    level: "DEBUG",
    attributes: {"shopId": "xxxxx", "shopName": "yyyyy"});