initialize static method
Future<void>
initialize({
- required SDKEnvironment environment,
- required String deviceId,
- String? baseURL,
- String? accessToken,
Initialize telemetry manager with device info (full async init)
Implementation
static Future<void> initialize({
required SDKEnvironment environment,
required String deviceId,
String? baseURL,
String? accessToken,
}) async {
if (_isInitialized) {
_logger.debug('Telemetry already initialized');
return;
}
_environment = environment;
_baseURL = baseURL;
_accessToken = accessToken;
try {
final lib = PlatformLoader.loadCommons();
// Get device info
final deviceModel = await _getDeviceModel();
final osVersion = Platform.operatingSystemVersion;
const sdkVersion = '0.1.4';
const platform = 'flutter';
// Create telemetry manager
final createManager = lib.lookupFunction<
Pointer<Void> Function(
Int32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
Pointer<Void> Function(int, Pointer<Utf8>, Pointer<Utf8>,
Pointer<Utf8>)>('rac_telemetry_manager_create');
final envValue = _environmentToInt(environment);
final deviceIdPtr = deviceId.toNativeUtf8();
final platformPtr = platform.toNativeUtf8();
final sdkVersionPtr = sdkVersion.toNativeUtf8();
try {
_managerPtr =
createManager(envValue, deviceIdPtr, platformPtr, sdkVersionPtr);
if (_managerPtr == nullptr ||
_managerPtr == Pointer<Void>.fromAddress(0)) {
_logger.warning('Failed to create telemetry manager');
return;
}
// Set device info
final setDeviceInfo = lib.lookupFunction<
Void Function(Pointer<Void>, Pointer<Utf8>, Pointer<Utf8>),
void Function(Pointer<Void>, Pointer<Utf8>,
Pointer<Utf8>)>('rac_telemetry_manager_set_device_info');
final deviceModelPtr = deviceModel.toNativeUtf8();
final osVersionPtr = osVersion.toNativeUtf8();
setDeviceInfo(_managerPtr!, deviceModelPtr, osVersionPtr);
calloc.free(deviceModelPtr);
calloc.free(osVersionPtr);
// Register HTTP callback
_registerHttpCallback();
_isInitialized = true;
_logger.debug('Telemetry manager initialized');
} finally {
calloc.free(deviceIdPtr);
calloc.free(platformPtr);
calloc.free(sdkVersionPtr);
}
} catch (e, stack) {
_logger.debug('Telemetry initialization error: $e', metadata: {
'stack': stack.toString(),
});
_isInitialized = true; // Avoid retry loops
}
}