initializeVless method
Future<void>
initializeVless({
- required void onStatusChanged(
- VlessStatus status
- required String notificationIconResourceType,
- required String notificationIconResourceName,
- required String providerBundleIdentifier,
- required String groupIdentifier,
- String? keychainAccessGroup,
override
Initializes platform channels and native configuration.
Implementation
@override
Future<void> initializeVless({
required void Function(VlessStatus status) onStatusChanged,
required String notificationIconResourceType,
required String notificationIconResourceName,
required String providerBundleIdentifier,
required String groupIdentifier,
String? keychainAccessGroup,
}) async {
if (keychainAccessGroup != null) {
if (keychainAccessGroup.trim().isEmpty) {
throw ArgumentError.value(keychainAccessGroup, 'keychainAccessGroup');
}
await _requireSecurityCapability('iosKeychainReference');
}
await _statusSubscription?.cancel();
_statusSubscription = eventChannel
.receiveBroadcastStream()
.distinct()
.listen((Object? event) {
final status = VlessStatus.tryParse(event);
if (status != null) {
onStatusChanged(status);
} else {
debugPrint('Ignoring malformed VLESS status payload: $event');
}
}, onError: (Object error, StackTrace stackTrace) {
debugPrint('VLESS status stream error: $error');
});
await methodChannel.invokeMethod(
'initializeVless',
{
'notificationIconResourceType': notificationIconResourceType,
'notificationIconResourceName': notificationIconResourceName,
'providerBundleIdentifier': providerBundleIdentifier,
'groupIdentifier': groupIdentifier,
if (keychainAccessGroup != null)
'keychainAccessGroup': keychainAccessGroup,
},
);
}