Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
Expand Down Expand Up @@ -47,6 +48,7 @@
public class OptimizelyFlutterSdkPlugin extends OptimizelyFlutterClient implements FlutterPlugin, ActivityAware, MethodCallHandler {

public static MethodChannel channel;
private static BinaryMessenger attachedMessenger;
private Appender<ILoggingEvent> flutterLogbackAppender;

/**
Expand Down Expand Up @@ -215,7 +217,8 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
if (channel != null) {
return;
}
channel = new MethodChannel(binding.getBinaryMessenger(), "optimizely_flutter_sdk");
attachedMessenger = binding.getBinaryMessenger();
channel = new MethodChannel(attachedMessenger, "optimizely_flutter_sdk");
channel.setMethodCallHandler(this);
context = binding.getApplicationContext();

Expand All @@ -234,8 +237,12 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {

@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
if (binding.getBinaryMessenger() != attachedMessenger) {
return;
}
channel.setMethodCallHandler(null);
channel = null;
attachedMessenger = null;
// Stop and detach the appender
if (flutterLogbackAppender != null) {
Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
Expand Down
11 changes: 9 additions & 2 deletions ios/Classes/SwiftOptimizelyFlutterSdkPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ public class SwiftOptimizelyFlutterSdkPlugin: NSObject, FlutterPlugin {

// to communicate with optimizely flutter sdk
static var channel: FlutterMethodChannel!

private static weak var attachedMessenger: FlutterBinaryMessenger?

// to track each unique userContext
var uuid: String {
return UUID().uuidString
Expand All @@ -41,7 +42,9 @@ public class SwiftOptimizelyFlutterSdkPlugin: NSObject, FlutterPlugin {
if channel != nil {
return
}
channel = FlutterMethodChannel(name: "optimizely_flutter_sdk", binaryMessenger: registrar.messenger())
let messenger = registrar.messenger()
attachedMessenger = messenger
channel = FlutterMethodChannel(name: "optimizely_flutter_sdk", binaryMessenger: messenger)
let instance = SwiftOptimizelyFlutterSdkPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)

Expand All @@ -55,8 +58,12 @@ public class SwiftOptimizelyFlutterSdkPlugin: NSObject, FlutterPlugin {
}

public func detachFromEngine(for registrar: FlutterPluginRegistrar) {
guard registrar.messenger() === Self.attachedMessenger else {
return
}
Self.channel?.setMethodCallHandler(nil)
Self.channel = nil
Self.attachedMessenger = nil
OptimizelyFlutterLogger.clearChannel()
}

Expand Down
Loading