juggleim-rnsdk 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +12 -1
- package/android/build/.transforms/42b8ab7e96b9440b0e91d2ecba5f579c/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$10.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$11.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$12.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$13.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$14.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$15.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$16.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$17.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$18.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$19.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$20.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$21.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$22.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$6.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$7.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$8.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$9.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMPackage.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/JuggleIMCallModule$1.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/JuggleIMCallModule$2.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/JuggleIMCallModule$3.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/JuggleIMCallModule.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/view/RCTZegoSurfaceViewManager.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/call/view/ZegoSurfaceView.dex +0 -0
- package/android/build/.transforms/a3b636e0768beb7635f48b7f77613c33/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$10.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$11.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$12.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$13.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$14.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$15.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$16.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$17.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$18.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$19.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$20.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$21.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$22.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$6.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$7.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$8.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager$9.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMManager.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/JuggleIMPackage.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/JuggleIMCallModule$1.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/JuggleIMCallModule$2.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/JuggleIMCallModule$3.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/JuggleIMCallModule.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/view/RCTZegoSurfaceViewManager.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/juggleim/call/view/ZegoSurfaceView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$10.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$11.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$12.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$13.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$14.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$15.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$16.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$17.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$18.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$19.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$20.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$21.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$22.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$6.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$7.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$8.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$9.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/JuggleIMCallModule$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/JuggleIMCallModule$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/JuggleIMCallModule$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/JuggleIMCallModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/view/RCTZegoSurfaceViewManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/call/view/ZegoSurfaceView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$1.class.uniqueId24 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$10.class.uniqueId0 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$11.class.uniqueId14 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$12.class.uniqueId22 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$13.class.uniqueId7 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$14.class.uniqueId15 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$15.class.uniqueId6 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$16.class.uniqueId11 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$17.class.uniqueId23 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$18.class.uniqueId8 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$19.class.uniqueId20 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$2.class.uniqueId3 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$20.class.uniqueId5 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$21.class.uniqueId13 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$22.class.uniqueId18 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$23.class.uniqueId10 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$3.class.uniqueId17 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$4.class.uniqueId21 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$5.class.uniqueId9 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$6.class.uniqueId12 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$7.class.uniqueId4 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$8.class.uniqueId16 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager$9.class.uniqueId19 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMManager.class.uniqueId1 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/JuggleIMPackage.class.uniqueId2 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +2 -0
- package/android/src/main/java/com/juggleim/JuggleIMManager.java +24 -3
- package/android/src/main/java/com/juggleim/JuggleIMPackage.java +4 -1
- package/android/src/main/java/com/juggleim/call/JuggleIMCallModule.java +507 -0
- package/android/src/main/java/com/juggleim/call/view/RCTZegoSurfaceViewManager.java +32 -0
- package/android/src/main/java/com/juggleim/call/view/ZegoSurfaceView.java +43 -0
- package/ios/JModelFactory.m +12 -3
- package/ios/JuggleIMManager.m +6 -7
- package/ios/call/JuggleIMCallModule.h +10 -0
- package/ios/call/JuggleIMCallModule.m +520 -0
- package/ios/call/README.md +51 -0
- package/ios/call/view/ZegoSurfaceView.h +7 -0
- package/ios/call/view/ZegoSurfaceView.m +45 -0
- package/ios/call/view/ZegoSurfaceViewManager.h +5 -0
- package/ios/call/view/ZegoSurfaceViewManager.m +12 -0
- package/juggleim-rnsdk.podspec +2 -0
- package/package.json +1 -1
- package/src/call/CallConst.ts +43 -0
- package/src/call/CallInfo.ts +13 -0
- package/src/call/CallMember.ts +12 -0
- package/src/call/CallSession.ts +186 -0
- package/src/call/JuggleIMCall.ts +79 -0
- package/src/call/ZegoSurfaceView.tsx +24 -0
- package/src/call/index.ts +8 -0
- package/src/index.d.ts +422 -864
- package/src/index.js +1 -0
- package/src/types.d.ts +453 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GenericCustomMessage.class.uniqueId0 +0 -0
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
#import "JuggleIMCallModule.h"
|
|
2
|
+
#import "../JModelFactory.h"
|
|
3
|
+
#import "view/ZegoSurfaceView.h"
|
|
4
|
+
#import <JuggleIM/JuggleIM.h>
|
|
5
|
+
#import <React/RCTEventEmitter.h>
|
|
6
|
+
|
|
7
|
+
@interface JuggleIMCallModule () <JCallReceiveDelegate,
|
|
8
|
+
JConversationCallDelegate>
|
|
9
|
+
|
|
10
|
+
@property(nonatomic, strong)
|
|
11
|
+
NSMutableDictionary<NSString *, id<JCallReceiveDelegate>> *receiveListeners;
|
|
12
|
+
@property(nonatomic, strong)
|
|
13
|
+
NSMutableDictionary<NSString *, id<JConversationCallDelegate>>
|
|
14
|
+
*conversationCallListeners;
|
|
15
|
+
@property(nonatomic, strong) NSMutableDictionary<
|
|
16
|
+
NSString *, NSMutableDictionary<NSString *, id<JCallSessionDelegate>> *>
|
|
17
|
+
*sessionListeners;
|
|
18
|
+
|
|
19
|
+
@end
|
|
20
|
+
|
|
21
|
+
#pragma mark - JCallSessionDelegateWrapper (declaration)
|
|
22
|
+
|
|
23
|
+
@interface JCallSessionDelegateWrapper : NSObject <JCallSessionDelegate>
|
|
24
|
+
|
|
25
|
+
@property(nonatomic, copy) NSString *callId;
|
|
26
|
+
@property(nonatomic, copy) NSString *key;
|
|
27
|
+
@property(nonatomic, weak) JuggleIMCallModule *module;
|
|
28
|
+
|
|
29
|
+
- (instancetype)initWithCallId:(NSString *)callId
|
|
30
|
+
key:(NSString *)key
|
|
31
|
+
module:(JuggleIMCallModule *)module;
|
|
32
|
+
|
|
33
|
+
@end
|
|
34
|
+
|
|
35
|
+
@implementation JuggleIMCallModule
|
|
36
|
+
|
|
37
|
+
RCT_EXPORT_MODULE(JuggleIMCallModule);
|
|
38
|
+
|
|
39
|
+
- (instancetype)init {
|
|
40
|
+
if (self = [super init]) {
|
|
41
|
+
_receiveListeners = [NSMutableDictionary dictionary];
|
|
42
|
+
_conversationCallListeners = [NSMutableDictionary dictionary];
|
|
43
|
+
_sessionListeners = [NSMutableDictionary dictionary];
|
|
44
|
+
}
|
|
45
|
+
return self;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
49
|
+
return YES;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
- (NSArray<NSString *> *)supportedEvents {
|
|
53
|
+
return @[
|
|
54
|
+
@"CallManager_onCallReceive", @"CallManager_onCallInfoUpdate",
|
|
55
|
+
@"CallSession_onCallConnect", @"CallSession_onCallFinish",
|
|
56
|
+
@"CallSession_onErrorOccur", @"CallSession_onUsersInvite",
|
|
57
|
+
@"CallSession_onUsersConnect", @"CallSession_onUsersLeave",
|
|
58
|
+
@"CallSession_onUserCameraEnable", @"CallSession_onUserMicrophoneEnable",
|
|
59
|
+
@"CallSession_onSoundLevelUpdate", @"CallSession_onVideoFirstFrameRender"
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
- (id<JCallProtocol>)getCallManager {
|
|
64
|
+
return JIM.shared.callManager;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#pragma mark - Engine Initialization
|
|
68
|
+
|
|
69
|
+
RCT_EXPORT_METHOD(initZegoEngine : (int)appId) {
|
|
70
|
+
// TODO: Verify iOS native method signature - may need appSign parameter
|
|
71
|
+
// Android: initZegoEngine(appId, context)
|
|
72
|
+
// iOS: initZegoEngineWith:appId appSign:appSign
|
|
73
|
+
// Need to check if iOS requires appSign or if it's optional
|
|
74
|
+
[[self getCallManager] initZegoEngineWith:appId appSign:@""];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
RCT_EXPORT_METHOD(initLiveKitEngine) {
|
|
78
|
+
[[self getCallManager] initLiveKitEngine];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
RCT_EXPORT_METHOD(initAgoraEngine : (NSString *)appId) {
|
|
82
|
+
[[self getCallManager] initAgoraEngineWith:appId];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#pragma mark - Call Management
|
|
86
|
+
|
|
87
|
+
RCT_EXPORT_METHOD(startSingleCall : (NSString *)userId mediaType : (
|
|
88
|
+
int)mediaType extra : (NSString *)extra resolver : (RCTPromiseResolveBlock)
|
|
89
|
+
resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
90
|
+
@try {
|
|
91
|
+
id<JCallSession> session =
|
|
92
|
+
[[self getCallManager] startSingleCall:userId
|
|
93
|
+
mediaType:(JCallMediaType)mediaType
|
|
94
|
+
extra:extra
|
|
95
|
+
delegate:nil];
|
|
96
|
+
NSDictionary *sessionDic = [JModelFactory callSessionToDic:session];
|
|
97
|
+
resolve(sessionDic);
|
|
98
|
+
} @catch (NSException *exception) {
|
|
99
|
+
reject(@"START_CALL_ERROR", exception.reason, nil);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
RCT_EXPORT_METHOD(
|
|
104
|
+
startMultiCall : (NSArray<NSString *> *)userIdList mediaType : (int)
|
|
105
|
+
mediaType extra : (NSString *)extra conversationMap : (NSDictionary *)
|
|
106
|
+
conversationMap resolver : (RCTPromiseResolveBlock)
|
|
107
|
+
resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
108
|
+
@try {
|
|
109
|
+
JConversation *conversation = nil;
|
|
110
|
+
if (conversationMap) {
|
|
111
|
+
conversation = [JModelFactory conversationFromDic:conversationMap];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
id<JCallSession> session =
|
|
115
|
+
[[self getCallManager] startMultiCall:userIdList
|
|
116
|
+
mediaType:(JCallMediaType)mediaType
|
|
117
|
+
conversation:conversation
|
|
118
|
+
extra:extra
|
|
119
|
+
delegate:nil];
|
|
120
|
+
NSDictionary *sessionDic = [JModelFactory callSessionToDic:session];
|
|
121
|
+
resolve(sessionDic);
|
|
122
|
+
} @catch (NSException *exception) {
|
|
123
|
+
reject(@"START_MULTI_CALL_ERROR", exception.reason, nil);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
RCT_EXPORT_METHOD(joinCall : (NSString *)callId resolver : (
|
|
128
|
+
RCTPromiseResolveBlock)resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
129
|
+
@try {
|
|
130
|
+
id<JCallSession> session = [[self getCallManager] joinCall:callId
|
|
131
|
+
delegate:nil];
|
|
132
|
+
NSDictionary *sessionDic = [JModelFactory callSessionToDic:session];
|
|
133
|
+
resolve(sessionDic);
|
|
134
|
+
} @catch (NSException *exception) {
|
|
135
|
+
reject(@"JOIN_CALL_ERROR", exception.reason, nil);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
RCT_EXPORT_METHOD(getCallSession : (NSString *)callId resolver : (
|
|
140
|
+
RCTPromiseResolveBlock)resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
141
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
142
|
+
if (session) {
|
|
143
|
+
NSDictionary *sessionDic = [JModelFactory callSessionToDic:session];
|
|
144
|
+
resolve(sessionDic);
|
|
145
|
+
} else {
|
|
146
|
+
resolve([NSNull null]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
#pragma mark - Listeners
|
|
151
|
+
|
|
152
|
+
RCT_EXPORT_METHOD(addReceiveListener : (NSString *)key) {
|
|
153
|
+
__weak typeof(self) weakSelf = self;
|
|
154
|
+
|
|
155
|
+
// Create a delegate wrapper that forwards to this module
|
|
156
|
+
id<JCallReceiveDelegate> listener =
|
|
157
|
+
(id<JCallReceiveDelegate>)^(id<JCallSession> callSession) {
|
|
158
|
+
[weakSelf handleCallReceive:callSession forKey:key];
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
self.receiveListeners[key] = listener;
|
|
162
|
+
[[self getCallManager] addReceiveDelegate:self];
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
RCT_EXPORT_METHOD(removeReceiveListener : (NSString *)key) {
|
|
166
|
+
[self.receiveListeners removeObjectForKey:key];
|
|
167
|
+
if (self.receiveListeners.count == 0) {
|
|
168
|
+
// TODO: iOS SDK may not have removeReceiveDelegate method
|
|
169
|
+
// Need to verify and potentially keep delegate registered
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
RCT_EXPORT_METHOD(addConversationCallListener : (NSString *)key) {
|
|
174
|
+
__weak typeof(self) weakSelf = self;
|
|
175
|
+
|
|
176
|
+
id<JConversationCallDelegate> listener = (id<JConversationCallDelegate>)^(
|
|
177
|
+
JCallInfo *callInfo, JConversation *conversation, BOOL isFinished) {
|
|
178
|
+
[weakSelf handleCallInfoUpdate:callInfo
|
|
179
|
+
conversation:conversation
|
|
180
|
+
isFinished:isFinished
|
|
181
|
+
forKey:key];
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
self.conversationCallListeners[key] = listener;
|
|
185
|
+
[[self getCallManager] addConversationCallDelegate:self];
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
RCT_EXPORT_METHOD(removeConversationCallListener : (NSString *)key) {
|
|
189
|
+
[self.conversationCallListeners removeObjectForKey:key];
|
|
190
|
+
if (self.conversationCallListeners.count == 0) {
|
|
191
|
+
// TODO: iOS SDK may not have removeConversationCallDelegate method
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
#pragma mark - Session Control Methods
|
|
196
|
+
|
|
197
|
+
RCT_EXPORT_METHOD(accept : (NSString *)callId) {
|
|
198
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
199
|
+
if (session) {
|
|
200
|
+
[session accept];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
RCT_EXPORT_METHOD(hangup : (NSString *)callId) {
|
|
205
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
206
|
+
if (session) {
|
|
207
|
+
[session hangup];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
RCT_EXPORT_METHOD(enableCamera : (NSString *)callId enable : (BOOL)enable) {
|
|
212
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
213
|
+
if (session) {
|
|
214
|
+
[session enableCamera:enable];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
RCT_EXPORT_METHOD(muteMicrophone : (NSString *)callId mute : (BOOL)mute) {
|
|
219
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
220
|
+
if (session) {
|
|
221
|
+
[session muteMicrophone:mute];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
RCT_EXPORT_METHOD(muteSpeaker : (NSString *)callId mute : (BOOL)mute) {
|
|
226
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
227
|
+
if (session) {
|
|
228
|
+
[session muteSpeaker:mute];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
RCT_EXPORT_METHOD(setSpeakerEnable : (NSString *)callId enable : (BOOL)enable) {
|
|
233
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
234
|
+
if (session) {
|
|
235
|
+
[session setSpeakerEnable:enable];
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
RCT_EXPORT_METHOD(useFrontCamera : (NSString *)callId enable : (BOOL)enable) {
|
|
240
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
241
|
+
if (session) {
|
|
242
|
+
[session useFrontCamera:enable];
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
RCT_EXPORT_METHOD(inviteUsers : (NSString *)
|
|
247
|
+
callId userIdList : (NSArray<NSString *> *)userIdList) {
|
|
248
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
249
|
+
if (session) {
|
|
250
|
+
[session inviteUsers:userIdList];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
RCT_EXPORT_METHOD(enableAEC : (NSString *)callId enable : (BOOL)enable) {
|
|
255
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
256
|
+
if (session) {
|
|
257
|
+
[session enableAEC:enable];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
RCT_EXPORT_METHOD(setVideoDenoiseParams : (NSString *)
|
|
262
|
+
callId params : (NSDictionary *)params) {
|
|
263
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
264
|
+
if (session) {
|
|
265
|
+
// TODO: Convert params dictionary to JCallVideoDenoiseParams
|
|
266
|
+
// Need to check JCallVideoDenoiseParams structure
|
|
267
|
+
JCallVideoDenoiseParams *denoiseParams =
|
|
268
|
+
[[JCallVideoDenoiseParams alloc] init];
|
|
269
|
+
[session setVideoDenoiseParams:denoiseParams];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
RCT_EXPORT_METHOD(setVideoView : (NSString *)callId userId : (NSString *)
|
|
274
|
+
userId viewTag : (nonnull NSNumber *)viewTag resolver : (
|
|
275
|
+
RCTPromiseResolveBlock)
|
|
276
|
+
resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
277
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
278
|
+
if (!session) {
|
|
279
|
+
reject(@"NoSession", @"Call session not found", nil);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
NSNumber *tag = viewTag;
|
|
284
|
+
[self.bridge.uiManager
|
|
285
|
+
addUIBlock:^(RCTUIManager *uiManager,
|
|
286
|
+
NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
287
|
+
UIView *view = viewRegistry[tag];
|
|
288
|
+
UIView *targetView = view;
|
|
289
|
+
if ([view isKindOfClass:[ZegoSurfaceView class]]) {
|
|
290
|
+
ZegoSurfaceView *zView = (ZegoSurfaceView *)view;
|
|
291
|
+
if (zView.videoView) {
|
|
292
|
+
targetView = zView.videoView;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
NSLog(@"[JuggleIMCallModule] setVideoView callId=%@ viewTag=%@ view=%@ "
|
|
296
|
+
@"targetView=%@",
|
|
297
|
+
callId, tag, view, targetView);
|
|
298
|
+
if (targetView) {
|
|
299
|
+
[session setVideoView:targetView forUserId:userId];
|
|
300
|
+
resolve(nil);
|
|
301
|
+
} else {
|
|
302
|
+
NSString *msg = [NSString
|
|
303
|
+
stringWithFormat:@"setVideoView View not found for tag %@", tag];
|
|
304
|
+
reject(@"ViewNotFound", msg, nil);
|
|
305
|
+
}
|
|
306
|
+
}];
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
RCT_EXPORT_METHOD(startPreview : (NSString *)callId viewTag : (
|
|
310
|
+
nonnull NSNumber *)viewTag resolver : (RCTPromiseResolveBlock)
|
|
311
|
+
resolve rejecter : (RCTPromiseRejectBlock)reject) {
|
|
312
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
313
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
314
|
+
if (!session)
|
|
315
|
+
return;
|
|
316
|
+
|
|
317
|
+
UIView *view = [self.bridge.uiManager viewForReactTag:viewTag];
|
|
318
|
+
UIView *targetView = view;
|
|
319
|
+
if ([view isKindOfClass:[ZegoSurfaceView class]]) {
|
|
320
|
+
ZegoSurfaceView *zView = (ZegoSurfaceView *)view;
|
|
321
|
+
if (zView.videoView) {
|
|
322
|
+
targetView = zView.videoView;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (targetView) {
|
|
326
|
+
[session startPreview:targetView];
|
|
327
|
+
resolve(nil);
|
|
328
|
+
} else {
|
|
329
|
+
reject(@"View not found", @"View not found", nil);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
#pragma mark - Session Listeners
|
|
335
|
+
|
|
336
|
+
RCT_EXPORT_METHOD(addSessionListener : (NSString *)callId key : (NSString *)
|
|
337
|
+
key) {
|
|
338
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
339
|
+
if (!session) {
|
|
340
|
+
NSLog(@"[JuggleIMCallModule] addSessionListener: session is null for "
|
|
341
|
+
@"callId=%@",
|
|
342
|
+
callId);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Create delegate wrapper
|
|
347
|
+
JCallSessionDelegateWrapper *listener =
|
|
348
|
+
[[JCallSessionDelegateWrapper alloc] initWithCallId:callId
|
|
349
|
+
key:key
|
|
350
|
+
module:self];
|
|
351
|
+
|
|
352
|
+
// Store listener in nested dictionary structure
|
|
353
|
+
if (!self.sessionListeners[callId]) {
|
|
354
|
+
self.sessionListeners[callId] = [NSMutableDictionary dictionary];
|
|
355
|
+
}
|
|
356
|
+
self.sessionListeners[callId][key] = listener;
|
|
357
|
+
[session addDelegate:listener];
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
RCT_EXPORT_METHOD(removeSessionListener : (NSString *)callId key : (NSString *)
|
|
361
|
+
key) {
|
|
362
|
+
id<JCallSession> session = [[self getCallManager] getCallSession:callId];
|
|
363
|
+
if (session && self.sessionListeners[callId]) {
|
|
364
|
+
[self.sessionListeners[callId] removeObjectForKey:key];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
#pragma mark - JCallReceiveDelegate
|
|
369
|
+
|
|
370
|
+
- (void)callDidReceive:(id<JCallSession>)callSession {
|
|
371
|
+
for (NSString *key in self.receiveListeners) {
|
|
372
|
+
[self handleCallReceive:callSession forKey:key];
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
- (void)handleCallReceive:(id<JCallSession>)callSession forKey:(NSString *)key {
|
|
377
|
+
NSDictionary *sessionDic = [JModelFactory callSessionToDic:callSession];
|
|
378
|
+
[self sendEventWithName:@"CallManager_onCallReceive"
|
|
379
|
+
body:@{@"key" : key, @"callSession" : sessionDic}];
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
#pragma mark - JConversationCallDelegate
|
|
383
|
+
|
|
384
|
+
- (void)callInfoDidUpdate:(JCallInfo *)callInfo
|
|
385
|
+
inConversation:(JConversation *)conversation
|
|
386
|
+
isFinished:(BOOL)isFinished {
|
|
387
|
+
for (NSString *key in self.conversationCallListeners) {
|
|
388
|
+
[self handleCallInfoUpdate:callInfo
|
|
389
|
+
conversation:conversation
|
|
390
|
+
isFinished:isFinished
|
|
391
|
+
forKey:key];
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
- (void)handleCallInfoUpdate:(JCallInfo *)callInfo
|
|
396
|
+
conversation:(JConversation *)conversation
|
|
397
|
+
isFinished:(BOOL)isFinished
|
|
398
|
+
forKey:(NSString *)key {
|
|
399
|
+
NSDictionary *callInfoDic = [JModelFactory callInfoToDic:callInfo];
|
|
400
|
+
NSDictionary *conversationDic =
|
|
401
|
+
[JModelFactory conversationToDic:conversation];
|
|
402
|
+
|
|
403
|
+
[self sendEventWithName:@"CallManager_onCallInfoUpdate"
|
|
404
|
+
body:@{
|
|
405
|
+
@"key" : key,
|
|
406
|
+
@"callInfo" : callInfoDic,
|
|
407
|
+
@"conversation" : conversationDic,
|
|
408
|
+
@"isFinished" : @(isFinished)
|
|
409
|
+
}];
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
@end
|
|
413
|
+
|
|
414
|
+
#pragma mark - JCallSessionDelegateWrapper
|
|
415
|
+
|
|
416
|
+
@implementation JCallSessionDelegateWrapper
|
|
417
|
+
|
|
418
|
+
- (instancetype)initWithCallId:(NSString *)callId
|
|
419
|
+
key:(NSString *)key
|
|
420
|
+
module:(JuggleIMCallModule *)module {
|
|
421
|
+
if (self = [super init]) {
|
|
422
|
+
_callId = callId;
|
|
423
|
+
_key = key;
|
|
424
|
+
_module = module;
|
|
425
|
+
}
|
|
426
|
+
return self;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
- (void)callDidConnect {
|
|
430
|
+
NSLog(@"CallSession_onCallConnect callId=%@", self.callId);
|
|
431
|
+
[self.module sendEventWithName:@"CallSession_onCallConnect"
|
|
432
|
+
body:@{@"callId" : self.callId}];
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
- (void)callDidFinish:(JCallFinishReason)finishReason {
|
|
436
|
+
NSLog(@"CallSession_onCallFinish callId=%@ finishReason=%ld", self.callId,
|
|
437
|
+
finishReason);
|
|
438
|
+
[self.module sendEventWithName:@"CallSession_onCallFinish"
|
|
439
|
+
body:@{
|
|
440
|
+
@"callId" : self.callId,
|
|
441
|
+
@"finishReason" : @(finishReason)
|
|
442
|
+
}];
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
- (void)usersDidInvite:(NSArray<NSString *> *)userIdList
|
|
446
|
+
inviterId:(NSString *)inviterId {
|
|
447
|
+
NSLog(@"CallSession_onUsersInvite callId=%@ inviterId=%@ userIdList=%@",
|
|
448
|
+
self.callId, inviterId, userIdList);
|
|
449
|
+
[self.module sendEventWithName:@"CallSession_onUsersInvite"
|
|
450
|
+
body:@{
|
|
451
|
+
@"callId" : self.callId,
|
|
452
|
+
@"inviterId" : inviterId,
|
|
453
|
+
@"userIdList" : userIdList
|
|
454
|
+
}];
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
- (void)usersDidConnect:(NSArray<NSString *> *)userIdList {
|
|
458
|
+
NSLog(@"CallSession_onUsersConnect callId=%@ userIdList=%@", self.callId,
|
|
459
|
+
userIdList);
|
|
460
|
+
[self.module
|
|
461
|
+
sendEventWithName:@"CallSession_onUsersConnect"
|
|
462
|
+
body:@{@"callId" : self.callId, @"userIdList" : userIdList}];
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
- (void)usersDidLeave:(NSArray<NSString *> *)userIdList {
|
|
466
|
+
[self.module
|
|
467
|
+
sendEventWithName:@"CallSession_onUsersLeave"
|
|
468
|
+
body:@{@"callId" : self.callId, @"userIdList" : userIdList}];
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
- (void)userCamaraDidChange:(BOOL)enable userId:(NSString *)userId {
|
|
472
|
+
NSLog(@"CallSession_onUserCameraEnable callId=%@ userId=%@ enable=%d",
|
|
473
|
+
self.callId, userId, enable);
|
|
474
|
+
[self.module sendEventWithName:@"CallSession_onUserCameraEnable"
|
|
475
|
+
body:@{
|
|
476
|
+
@"callId" : self.callId,
|
|
477
|
+
@"userId" : userId,
|
|
478
|
+
@"enable" : @(enable)
|
|
479
|
+
}];
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
- (void)userMicrophoneDidChange:(BOOL)enable userId:(NSString *)userId {
|
|
483
|
+
NSLog(@"CallSession_onUserMicrophoneEnable callId=%@ userId=%@ enable=%d",
|
|
484
|
+
self.callId, userId, enable);
|
|
485
|
+
[self.module sendEventWithName:@"CallSession_onUserMicrophoneEnable"
|
|
486
|
+
body:@{
|
|
487
|
+
@"callId" : self.callId,
|
|
488
|
+
@"userId" : userId,
|
|
489
|
+
@"enable" : @(enable)
|
|
490
|
+
}];
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
- (void)soundLevelDidUpdate:
|
|
494
|
+
(NSDictionary<NSString *, NSNumber *> *)soundLevels {
|
|
495
|
+
[self.module sendEventWithName:@"CallSession_onSoundLevelUpdate"
|
|
496
|
+
body:@{
|
|
497
|
+
@"callId" : self.callId,
|
|
498
|
+
@"soundLevels" : soundLevels
|
|
499
|
+
}];
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
- (void)videoFirstFrameDidRender:(NSString *)userId {
|
|
503
|
+
NSLog(@"CallSession_onVideoFirstFrameRender callId=%@ userId=%@", self.callId,
|
|
504
|
+
userId);
|
|
505
|
+
[self.module
|
|
506
|
+
sendEventWithName:@"CallSession_onVideoFirstFrameRender"
|
|
507
|
+
body:@{@"callId" : self.callId, @"userId" : userId}];
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
- (void)errorDidOccur:(JCallErrorCode)errorCode {
|
|
511
|
+
NSLog(@"CallSession_onErrorOccur callId=%@ errorCode=%ld", self.callId,
|
|
512
|
+
errorCode);
|
|
513
|
+
[self.module sendEventWithName:@"CallSession_onErrorOccur"
|
|
514
|
+
body:@{
|
|
515
|
+
@"callId" : self.callId,
|
|
516
|
+
@"errorCode" : @(errorCode)
|
|
517
|
+
}];
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
@end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# iOS Call Module - File Summary
|
|
2
|
+
|
|
3
|
+
## Created Files
|
|
4
|
+
|
|
5
|
+
### Bridge Module
|
|
6
|
+
- `ios/call/JuggleIMCallModule.h` - Main bridge module header
|
|
7
|
+
- `ios/call/JuggleIMCallModule.m` - Main bridge module implementation (450+ lines)
|
|
8
|
+
|
|
9
|
+
### View Components
|
|
10
|
+
- `ios/call/view/ZegoSurfaceView.h` - Video surface view header
|
|
11
|
+
- `ios/call/view/ZegoSurfaceView.m` - Video surface view implementation
|
|
12
|
+
- `ios/call/view/ZegoSurfaceViewManager.h` - View manager header
|
|
13
|
+
- `ios/call/view/ZegoSurfaceViewManager.m` - View manager implementation
|
|
14
|
+
|
|
15
|
+
## Modified Files
|
|
16
|
+
|
|
17
|
+
### Field Mapping Fixes
|
|
18
|
+
- `ios/JModelFactory.m`
|
|
19
|
+
- Line 330: `inviterId` → `inviter`
|
|
20
|
+
- Line 343: Added `currentMember` field
|
|
21
|
+
- Line 163: `userName` → `nickname`
|
|
22
|
+
- Line 167: `portrait` → `avatar`
|
|
23
|
+
|
|
24
|
+
## Directory Structure
|
|
25
|
+
```
|
|
26
|
+
ios/
|
|
27
|
+
├── call/
|
|
28
|
+
│ ├── JuggleIMCallModule.h
|
|
29
|
+
│ ├── JuggleIMCallModule.m
|
|
30
|
+
│ └── view/
|
|
31
|
+
│ ├── ZegoSurfaceView.h
|
|
32
|
+
│ ├── ZegoSurfaceView.m
|
|
33
|
+
│ ├── ZegoSurfaceViewManager.h
|
|
34
|
+
│ └── ZegoSurfaceViewManager.m
|
|
35
|
+
├── JModelFactory.h (existing, no changes)
|
|
36
|
+
└── JModelFactory.m (modified)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## TODO Items
|
|
40
|
+
|
|
41
|
+
See `walkthrough.md` for detailed TODO items that need verification:
|
|
42
|
+
1. Zego engine initialization appSign parameter
|
|
43
|
+
2. Remove delegate methods availability
|
|
44
|
+
3. Video denoise parameters conversion
|
|
45
|
+
|
|
46
|
+
## Next Steps
|
|
47
|
+
|
|
48
|
+
1. Verify TODO items against iOS SDK
|
|
49
|
+
2. Register modules in Xcode project/podspec
|
|
50
|
+
3. Test compilation
|
|
51
|
+
4. Test runtime functionality
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#import "ZegoSurfaceView.h"
|
|
2
|
+
|
|
3
|
+
@implementation ZegoSurfaceView
|
|
4
|
+
|
|
5
|
+
- (instancetype)initWithFrame:(CGRect)frame {
|
|
6
|
+
if (self = [super initWithFrame:frame]) {
|
|
7
|
+
// videoView will be created lazily in layoutSubviews when bounds are
|
|
8
|
+
// available
|
|
9
|
+
}
|
|
10
|
+
return self;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (instancetype)init {
|
|
14
|
+
if (self = [super init]) {
|
|
15
|
+
// videoView will be created lazily in layoutSubviews when bounds are
|
|
16
|
+
// available
|
|
17
|
+
}
|
|
18
|
+
return self;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
- (void)setupVideoView {
|
|
22
|
+
NSLog(@"[ZegoSurfaceView] setupVideoView with bounds: %@",
|
|
23
|
+
NSStringFromCGRect(self.bounds));
|
|
24
|
+
// Create a container view for video rendering
|
|
25
|
+
_videoView = [[UIView alloc] initWithFrame:self.bounds];
|
|
26
|
+
_videoView.autoresizingMask =
|
|
27
|
+
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
|
28
|
+
_videoView.backgroundColor = [UIColor blackColor];
|
|
29
|
+
[self addSubview:_videoView];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
- (void)layoutSubviews {
|
|
33
|
+
[super layoutSubviews];
|
|
34
|
+
|
|
35
|
+
// Lazy initialization of videoView when bounds are available
|
|
36
|
+
if (!_videoView && !CGRectIsEmpty(self.bounds)) {
|
|
37
|
+
[self setupVideoView];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (_videoView) {
|
|
41
|
+
_videoView.frame = self.bounds;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@end
|
package/juggleim-rnsdk.podspec
CHANGED