ARMS使用者體驗監控提供一系列SDK配置項,讓您能夠通過設定參數來滿足額外需求。本文介紹Flutter應用常用的SDK配置。
啟動配置
start方法是AlibabaCloudRUM Flutter 外掛程式的核心啟動方法,負責初始化整個 Flutter 外掛程式監控系統並啟動應用程式。
Future<void> start(Widget topLevelWidget, {Function()? beforeRunApp}) async參數 | 說明 | 參數限制 | 失敗結果 |
topLevelWidget | Flutter的根Widget | 非空 | 介面調用失敗 |
beforeRunApp | 回呼函數,在 | 可選,如果設定了該參數,則必須在該回呼函數中主動調用 | - |
樣本:
AlibabaCloudRUM().start(
// 根 Widget
MyApp(),
beforeRunApp: () async => {
// 在當前函數結束前,必須要調用下面這個方法
WidgetsFlutterBinding.ensureInitialized(),
// 其他商務邏輯
// ...
},
);列印錯誤資訊
當SDK捕獲到Flutter異常時,會預設調用FlutterError.dumpErrorToConsole輸出錯誤資訊到控制台,您可以通過setDumpError方法開啟或關閉。
void setDumpError(bool enable)參數 | 說明 | 參數限制 | 失敗結果 |
enable | 設定是否輸出錯誤資訊到控制台。 | 取值:
| - |
樣本:
// 禁止輸出錯誤資訊到控制台
AlibabaCloudRUM().setDumpError(false); Flutter錯誤回調
由於Flutter對錯誤的監控無法逐層傳遞,導致AlibabaCloudRUM外掛程式對同步、非同步介面進行監控後,應用內原有的錯誤監聽會失效。因此,Flutter外掛程式提供了統一的錯誤回調介面。
void onRUMErrorCallback(bool callback(Object? error, StackTrace? stack, bool isAsync))回呼函數入參:
參數 | 類型 | 說明 |
error | Object | 錯誤原因。 |
stack | StackTrace | 可選,錯誤堆棧。 |
isAsync | Bool | 可選,是否為非同步錯誤。 |
回呼函數傳回值:
類型 | 說明 |
Bool | 是否繼續處理錯誤。
|
樣本:
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"});