juggleim-rnsdk 1.0.1 → 1.0.3

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.
Files changed (61) hide show
  1. package/android/build/.transforms/b0801d69fde866e333b2668f7818fd8c/transformed/classes/classes_dex/classes.dex +0 -0
  2. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$10.dex +0 -0
  3. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$11.dex +0 -0
  4. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$12.dex +0 -0
  5. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$13.dex +0 -0
  6. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$14.dex +0 -0
  7. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$15.dex +0 -0
  8. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$16.dex +0 -0
  9. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$17.dex +0 -0
  10. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$18.dex +0 -0
  11. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$19.dex +0 -0
  12. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$20.dex +0 -0
  13. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$21.dex +0 -0
  14. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$22.dex +0 -0
  15. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$23.dex +0 -0
  16. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$24.dex +0 -0
  17. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$25.dex +0 -0
  18. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$26.dex +0 -0
  19. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$27.dex +0 -0
  20. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$28.dex +0 -0
  21. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$29.dex +0 -0
  22. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$30.dex +0 -0
  23. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$31.dex +0 -0
  24. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$32.dex +0 -0
  25. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$7.dex +0 -0
  26. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$8.dex +0 -0
  27. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager$9.dex +0 -0
  28. package/android/build/.transforms/b4ca33bd6785fb4810b9572ca7ad5980/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/juggleim/JuggleIMManager.dex +0 -0
  29. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  30. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$10.class +0 -0
  31. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$11.class +0 -0
  32. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$12.class +0 -0
  33. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$13.class +0 -0
  34. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$14.class +0 -0
  35. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$15.class +0 -0
  36. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$16.class +0 -0
  37. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$17.class +0 -0
  38. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$18.class +0 -0
  39. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$19.class +0 -0
  40. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$20.class +0 -0
  41. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$21.class +0 -0
  42. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$22.class +0 -0
  43. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$23.class +0 -0
  44. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$24.class +0 -0
  45. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$25.class +0 -0
  46. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$26.class +0 -0
  47. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$27.class +0 -0
  48. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$28.class +0 -0
  49. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$29.class +0 -0
  50. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$30.class +0 -0
  51. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$31.class +0 -0
  52. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$32.class +0 -0
  53. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$7.class +0 -0
  54. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$8.class +0 -0
  55. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager$9.class +0 -0
  56. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/juggleim/JuggleIMManager.class +0 -0
  57. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  58. package/ios/JRNCustomMessageContent.h +32 -0
  59. package/ios/JRNCustomMessageContent.m +69 -0
  60. package/ios/JuggleIMManager.m +11 -2
  61. package/package.json +1 -2
@@ -0,0 +1,32 @@
1
+ //
2
+ // JRNCustomMessageContent.h
3
+ // juggleim-rnsdk
4
+ //
5
+ // RN 自定义消息的通用承载类。
6
+ //
7
+ // 原生 JuggleIM SDK 要求自定义消息类型必须通过 messageManager 的
8
+ // registerContentType: 注册,否则 SDK 无法解析该类型——表现为会话列表的
9
+ // lastMessage 变成空壳(messageId/contentType 为空,content.contentType
10
+ // 回退成 "jg:unknown")。详见 JMessageProtocol.h 与 JMessageContent.h
11
+ // (conversationDigest 注释:会话列表中显示的消息摘要)。
12
+ //
13
+ // RN 层只持有类型字符串、没有逐类型的 ObjC 类,因此用本类做透传:
14
+ // decode: 仅保存原始字节,encode 原样返回,由 RN 层自行解析 JSON。
15
+ // 每个 contentType 在运行时动态生成一个子类(仅重写 +contentType)。
16
+ //
17
+
18
+ #import <JuggleIM/JuggleIM.h>
19
+
20
+ NS_ASSUME_NONNULL_BEGIN
21
+
22
+ @interface JRNCustomMessageContent : JMessageContent
23
+
24
+ /// 原始消息内容字节(即业务 JSON),由 SDK decode: 填入、encode 原样取出。
25
+ @property (nonatomic, strong, nullable) NSData *rawData;
26
+
27
+ /// 为指定 contentType 动态创建并返回可注册的子类(幂等,可重复调用)。
28
+ + (Class)registerableClassForContentType:(NSString *)contentType;
29
+
30
+ @end
31
+
32
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,69 @@
1
+ //
2
+ // JRNCustomMessageContent.m
3
+ // juggleim-rnsdk
4
+ //
5
+
6
+ #import "JRNCustomMessageContent.h"
7
+ #import <objc/runtime.h>
8
+
9
+ @implementation JRNCustomMessageContent
10
+
11
+ // 基类占位,实际类型由动态子类重写返回。
12
+ + (NSString *)contentType {
13
+ return @"jg:rn:custom";
14
+ }
15
+
16
+ - (NSData *)encode {
17
+ return self.rawData ?: [NSData data];
18
+ }
19
+
20
+ - (void)decode:(NSData *)data {
21
+ self.rawData = data;
22
+ }
23
+
24
+ // 会话摘要由 RN 层渲染,这里返回空串即可,
25
+ // 关键是「能被解析」从而让会话列表 lastMessage 正常填充。
26
+ - (NSString *)conversationDigest {
27
+ return @"";
28
+ }
29
+
30
+ + (Class)registerableClassForContentType:(NSString *)contentType {
31
+ if (contentType.length == 0) {
32
+ return [JRNCustomMessageContent class];
33
+ }
34
+
35
+ // 类名需为合法标识符(去掉冒号等非字母数字字符);
36
+ // 注意 +contentType 仍返回原始字符串(含冒号),SDK 据此做类型映射。
37
+ NSMutableString *safe = [NSMutableString stringWithString:@"JRNCustom_"];
38
+ for (NSUInteger i = 0; i < contentType.length; i++) {
39
+ unichar c = [contentType characterAtIndex:i];
40
+ BOOL isAlnum = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
41
+ (c >= '0' && c <= '9');
42
+ [safe appendString:isAlnum ? [NSString stringWithFormat:@"%C", c] : @"_"];
43
+ }
44
+ const char *className = safe.UTF8String;
45
+
46
+ Class existing = objc_getClass(className);
47
+ if (existing) {
48
+ return existing;
49
+ }
50
+
51
+ Class cls = objc_allocateClassPair([JRNCustomMessageContent class], className, 0);
52
+ if (!cls) {
53
+ // 并发/重名兜底
54
+ return objc_getClass(className) ?: [JRNCustomMessageContent class];
55
+ }
56
+
57
+ // 在元类上重写 + (NSString *)contentType,返回原始 contentType。
58
+ NSString *typeCopy = [contentType copy];
59
+ IMP ctImp = imp_implementationWithBlock(^NSString *(id _self) {
60
+ return typeCopy;
61
+ });
62
+ Class meta = object_getClass(cls);
63
+ class_addMethod(meta, @selector(contentType), ctImp, "@@:");
64
+
65
+ objc_registerClassPair(cls);
66
+ return cls;
67
+ }
68
+
69
+ @end
@@ -1,4 +1,5 @@
1
1
  #import "JuggleIMManager.h"
2
+ #import "JRNCustomMessageContent.h"
2
3
  #import <JuggleIM/JuggleIM.h>
3
4
  #import <React/RCTEventEmitter.h>
4
5
 
@@ -44,6 +45,15 @@ RCT_EXPORT_METHOD(registerCustomMessageType : (NSString *)contentType) {
44
45
  return;
45
46
  }
46
47
  self.customMessageTypes[contentType] = contentType;
48
+
49
+ // fix: 向原生 SDK 注册自定义消息类。
50
+ // 原因: 未注册的自定义类型,SDK 无法解析会话列表的 lastMessage(详见
51
+ // JMessageProtocol.h registerContentType: 注释),导致 lastMessage
52
+ // 退化为空壳、content.contentType 变为 "jg:unknown"(详情页走 getMessages
53
+ // 不受影响,故仅会话列表显示 unknown;Android SDK 无此限制故正常)。
54
+ Class cls = [JRNCustomMessageContent registerableClassForContentType:contentType];
55
+ [JIM.shared.messageManager registerContentType:cls];
56
+
47
57
  NSLog(@"注册自定义消息类型: %@", contentType);
48
58
  }
49
59
 
@@ -416,8 +426,7 @@ RCT_EXPORT_METHOD(addConversationDelegate) {
416
426
  - (NSDictionary *)convertMessageToDictionary:(JMessage *)message {
417
427
  NSMutableDictionary *dict = [NSMutableDictionary dictionary];
418
428
  dict[@"messageId"] = message.messageId ?: @"";
419
- dict[@"clientMsgNo"] =
420
- [NSString stringWithFormat:@"%lld", message.clientMsgNo];
429
+ dict[@"clientMsgNo"] = @(message.clientMsgNo);
421
430
  dict[@"timestamp"] = @(message.timestamp);
422
431
  dict[@"senderUserId"] = message.senderUserId ?: @"";
423
432
  dict[@"conversation"] =
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juggleim-rnsdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "React Native wrapper for Juggle IM SDK",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -19,7 +19,6 @@
19
19
  ],
20
20
  "scripts": {
21
21
  "test": "echo \"Error: no test specified\" && exit 1",
22
- "test:video-media-bridge": "node scripts/check-video-media-bridge.js",
23
22
  "app": "cd app && npm start",
24
23
  "prepare": "npm run build",
25
24
  "build": "echo \"Build completed\""