sendAttributes static method

Future<String?> sendAttributes(
  1. String screenName,
  2. Map<String, String> data
)

Implementation

static Future<String?> sendAttributes(
    String screenName,
    Map<String, String> data,
    ) async {
  try {
    final result = await _channel.invokeMethod(
      "sendAttributes",
      {
        "screenName": screenName,
        "attributes": data,
      },
    );

    latestError = null;

    // iOS old SDK → bool
    if (result is bool) {
      if (!result) {
        latestError = const ShieldError("0", "sendAttributes failed");
        return null;
      }
      return await sessionId;
    }

    // Android new SDK → sessionId
    return result?.toString();
  } on PlatformException catch (e, s) {
    _internalLog("sendAttributes failed", e, s);
    latestError = ShieldError(
      e.code,
      e.message ?? e.details?.toString() ?? "Unknown error",
      exception: e.details?.toString(),
    );
    return null;
  } catch (e, s) {
    _internalLog("sendAttributes failed", e, s);
    latestError = ShieldError(
      "0",
      e.toString().isNotEmpty
          ? e.toString()
          : (s.toString().isNotEmpty ? s.toString() : "Unknown error"),
    );
    return null;
  }
}