getCapabilities method
Reports whether this adapter can own a complete SDK session.
The default implementation is intentionally unavailable so existing federated implementations continue to use the Dart backend until they explicitly implement the complete versioned contract.
Implementation
@override
Future<InappifyBackendCapabilities> getCapabilities() async {
try {
final response = await _invoke(
method: InappifyChannelContract.handshake,
payload: <String, Object?>{
'clientProtocolVersions': const <int>[
InappifyChannelContract.protocolVersion,
],
},
);
if (!response.isSuccess || response.data == null) {
return InappifyBackendCapabilities.unavailable(
backendKind: InappifyBackendKind.methodChannel,
);
}
return InappifyBackendCapabilities.fromMap(response.data!);
} on MissingPluginException {
return InappifyBackendCapabilities.unavailable(
backendKind: InappifyBackendKind.methodChannel,
);
} on PlatformException {
return InappifyBackendCapabilities.unavailable(
backendKind: InappifyBackendKind.methodChannel,
);
} on FormatException {
return InappifyBackendCapabilities.unavailable(
backendKind: InappifyBackendKind.methodChannel,
);
} catch (_) {
return InappifyBackendCapabilities.unavailable(
backendKind: InappifyBackendKind.methodChannel,
);
}
}