diff --git a/ios/Classes/AblyFlutter.m b/ios/Classes/AblyFlutter.m index e465407d8..c8c7756a8 100644 --- a/ios/Classes/AblyFlutter.m +++ b/ios/Classes/AblyFlutter.m @@ -599,6 +599,38 @@ -(void)reset; }]; }; +static const FlutterHandler _connectionId = ^void(AblyFlutter *const ably, FlutterMethodCall *const call, const FlutterResult result) { + AblyFlutterMessage *const ablyMessage = call.arguments; + AblyInstanceStore *const instanceStore = [ably instanceStore]; + ARTRealtime *const realtime = [instanceStore realtimeFrom:ablyMessage.handle]; + NSString *const connectionId = [realtime.connection.id]; + result(connectionId); +}; + +static const FlutterHandler _connectionKey = ^void(AblyFlutter *const ably, FlutterMethodCall *const call, const FlutterResult result) { + AblyFlutterMessage *const ablyMessage = call.arguments; + AblyInstanceStore *const instanceStore = [ably instanceStore]; + ARTRealtime *const realtime = [instanceStore realtimeFrom:ablyMessage.handle]; + NSString *const connectionKey = [realtime.connection.key]; + result(connectionKey); +}; + +static const FlutterHandler _connectionError = ^void(AblyFlutter *const ably, FlutterMethodCall *const call, const FlutterResult result) { + AblyFlutterMessage *const ablyMessage = call.arguments; + AblyInstanceStore *const instanceStore = [ably instanceStore]; + ARTRealtime *const realtime = [instanceStore realtimeFrom:ablyMessage.handle]; + ARTErrorInfo* connectionError = [realtime.connection.reason]; + result(connectionError); +}; + +static const FlutterHandler _connectionRecoveryKey = ^void(AblyFlutter *const ably, FlutterMethodCall *const call, const FlutterResult result) { + AblyFlutterMessage *const ablyMessage = call.arguments; + AblyInstanceStore *const instanceStore = [ably instanceStore]; + ARTRealtime *const realtime = [instanceStore realtimeFrom:ablyMessage.handle]; + NSString *const connectionRecoveryKey = [realtime.connection.recoveryKey]; + result(connectionRecoveryKey); +}; + static const FlutterHandler _getNextPage = ^void(AblyFlutter *const ably, FlutterMethodCall *const call, const FlutterResult result) { AblyFlutterMessage *const ablyMessage = call.arguments; @@ -741,6 +773,11 @@ -(instancetype)initWithChannel:(FlutterMethodChannel *const)channel AblyPlatformMethod_releaseRealtimeChannel: _releaseRealtimeChannel, AblyPlatformMethod_realtimeTime:_realtimeTime, AblyPlatformMethod_restTime:_restTime, + // Connection fields + AblyPlatformMethod_connectionId:_connectionId; + AblyPlatformMethod_connectionKey:_connectionKey; + AblyPlatformMethod_connectionRecoveryKey:_connectionRecoveryKey; + AblyPlatformMethod_connectionErrorReason:_connectionErrorReason; // Push Notifications AblyPlatformMethod_pushActivate: PushHandlers.activate, AblyPlatformMethod_pushRequestPermission: PushHandlers.requestPermission,