Bladeren bron

应用启动时检查是否启动了callkit

heavyrian2012 2 maanden geleden
bovenliggende
commit
c5071d2b11

+ 5 - 0
rtckit/android/src/main/java/cn/wildfirechat/rtckit/RtckitPlugin.java

@@ -134,6 +134,11 @@ public class RtckitPlugin implements FlutterPlugin, MethodCallHandler, ActivityA
         //only ios support
         result.success(null);
     }
+
+    private void disableCallkit(@NonNull MethodCall call, @NonNull Result result) {
+        //only ios support
+        result.success(null);
+    }
     
     private void addICEServer(@NonNull MethodCall call, @NonNull Result result) {
         String url = call.argument("url");

+ 17 - 2
rtckit/ios/Classes/RtckitPlugin.m

@@ -137,7 +137,7 @@
 @property(nonatomic, strong) WFCCallKitManager *callKitManager;
 @end
 
-
+#define WF_ENABLE_CALLKIT_KEY @"WF_ENABLE_CALLKIT"
 @implementation RtckitPlugin
 + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
     FlutterMethodChannel* channel = [FlutterMethodChannel
@@ -149,6 +149,10 @@
     [WFAVEngineKit sharedEngineKit].delegate = instance;
     instance.delegaters = [[NSMutableDictionary alloc] init];
     instance.videoViews = [[NSMutableDictionary alloc] init];
+    if([[[NSUserDefaults standardUserDefaults] objectForKey:WF_ENABLE_CALLKIT_KEY] boolValue]) {
+        instance.callKitManager = [[WFCCallKitManager alloc] initWithChannel:channel];
+    }
+    
     
     FLNativeViewFactory* factory = [[FLNativeViewFactory alloc] initWithMessenger:registrar.messenger maps:instance.videoViews];
     [registrar registerViewFactory:factory withId:@"<platform-view-type>"];
@@ -192,7 +196,18 @@
 }
 
 - (void)enableCallkit:(NSDictionary *)dict result:(FlutterResult)result {
-    self.callKitManager = [[WFCCallKitManager alloc] initWithChannel:self.channel];
+    [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:WF_ENABLE_CALLKIT_KEY];
+    if(!self.callKitManager) {
+        self.callKitManager = [[WFCCallKitManager alloc] initWithChannel:self.channel];
+    }
+    result(nil);
+}
+
+- (void)disableCallkit:(NSDictionary *)dict result:(FlutterResult)result {
+    [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:WF_ENABLE_CALLKIT_KEY];
+    if(self.callKitManager) {
+        self.callKitManager = nil;
+    }
     result(nil);
 }
 

+ 4 - 0
rtckit/lib/rtckit.dart

@@ -483,6 +483,10 @@ class Rtckit {
     return RtckitPlatform.instance.enableCallkit();
   }
 
+  static Future<void> disableCallkit() async {
+    return RtckitPlatform.instance.disableCallkit();
+  }
+
   static Future<void> addICEServer(String url, String name, String password) async {
     return RtckitPlatform.instance.addICEServer(url, name, password);
   }

+ 4 - 0
rtckit/lib/rtckit_method_channel.dart

@@ -311,6 +311,10 @@ class RtckitPlatform extends PlatformInterface {
     return await methodChannel.invokeMethod("enableCallkit");
   }
 
+  Future<void> disableCallkit() async {
+    return await methodChannel.invokeMethod("disableCallkit");
+  }
+
   Future<void> addICEServer(String url, String name, String password) async {
     var args = {"url": url, "name": name, "password": password};
     return await methodChannel.invokeMethod("addICEServer", args);