Browse Source

feat:WQPlayBallLiveQiu

menghui 3 tháng trước cách đây
mục cha
commit
8ed472bc4b
24 tập tin đã thay đổi với 984 bổ sung0 xóa
  1. 14 0
      WQPlayBallLiveQiu/.travis.yml
  2. 6 0
      WQPlayBallLiveQiu/Example/Podfile
  3. 22 0
      WQPlayBallLiveQiu/Example/Pods/Local Podspecs/WQPlayBallLiveQiu.podspec.json
  4. 22 0
      WQPlayBallLiveQiu/Example/Tests/Tests-Info.plist
  5. 7 0
      WQPlayBallLiveQiu/Example/Tests/Tests-Prefix.pch
  6. 35 0
      WQPlayBallLiveQiu/Example/Tests/Tests.m
  7. 2 0
      WQPlayBallLiveQiu/Example/Tests/en.lproj/InfoPlist.strings
  8. 395 0
      WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/project.pbxproj
  9. 7 0
      WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  10. 101 0
      WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/xcshareddata/xcschemes/WQPlayBallLiveQiu-Example.xcscheme
  11. 19 0
      WQPlayBallLiveQiu/LICENSE
  12. 29 0
      WQPlayBallLiveQiu/README.md
  13. 50 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu.podspec
  14. 0 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Assets/.gitkeep
  15. 0 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/.gitkeep
  16. 13 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveAppProxy.h
  17. 35 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveAppProxy.m
  18. 17 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveListComponent.h
  19. 64 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveListComponent.m
  20. 20 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveModule.h
  21. 77 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveModule.m
  22. 0 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/ReplaceMe.m
  23. 23 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/WQOptions.h
  24. 26 0
      WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/WQOptions.m

+ 14 - 0
WQPlayBallLiveQiu/.travis.yml

@@ -0,0 +1,14 @@
+# references:
+# * https://www.objc.io/issues/6-build-tools/travis-ci/
+# * https://github.com/supermarin/xcpretty#usage
+
+osx_image: xcode7.3
+language: objective-c
+# cache: cocoapods
+# podfile: Example/Podfile
+# before_install:
+# - gem install cocoapods # Since Travis is not always on latest version
+# - pod install --project-directory=Example
+script:
+- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/WQPlayBallLiveQiu.xcworkspace -scheme WQPlayBallLiveQiu-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
+- pod lib lint

+ 6 - 0
WQPlayBallLiveQiu/Example/Podfile

@@ -0,0 +1,6 @@
+use_frameworks!
+target 'WQPlayBallLiveQiu_Tests' do
+  pod 'WQPlayBallLiveQiu', :path => '../'
+  
+  
+end

+ 22 - 0
WQPlayBallLiveQiu/Example/Pods/Local Podspecs/WQPlayBallLiveQiu.podspec.json

@@ -0,0 +1,22 @@
+{
+  "name": "WQPlayBallLiveQiu",
+  "version": "0.1.0",
+  "summary": "A short description of WQPlayBallLiveQiu.",
+  "description": "TODO: Add long description of the pod here.",
+  "homepage": "https://github.com/menghui/WQPlayBallLiveQiu",
+  "license": {
+    "type": "MIT",
+    "file": "LICENSE"
+  },
+  "authors": {
+    "menghui": "menhui222@163.com"
+  },
+  "source": {
+    "git": "https://github.com/menghui/WQPlayBallLiveQiu.git",
+    "tag": "0.1.0"
+  },
+  "platforms": {
+    "ios": "10.0"
+  },
+  "source_files": "WQPlayBallLiveQiu/Classes/**/*"
+}

+ 22 - 0
WQPlayBallLiveQiu/Example/Tests/Tests-Info.plist

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>

+ 7 - 0
WQPlayBallLiveQiu/Example/Tests/Tests-Prefix.pch

@@ -0,0 +1,7 @@
+//  The contents of this file are implicitly included at the beginning of every test case source file.
+
+#ifdef __OBJC__
+
+  
+
+#endif

+ 35 - 0
WQPlayBallLiveQiu/Example/Tests/Tests.m

@@ -0,0 +1,35 @@
+//
+//  WQPlayBallLiveQiuTests.m
+//  WQPlayBallLiveQiuTests
+//
+//  Created by menghui on 12/27/2024.
+//  Copyright (c) 2024 menghui. All rights reserved.
+//
+
+@import XCTest;
+
+@interface Tests : XCTestCase
+
+@end
+
+@implementation Tests
+
+- (void)setUp
+{
+    [super setUp];
+    // Put setup code here. This method is called before the invocation of each test method in the class.
+}
+
+- (void)tearDown
+{
+    // Put teardown code here. This method is called after the invocation of each test method in the class.
+    [super tearDown];
+}
+
+- (void)testExample
+{
+    XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
+}
+
+@end
+

+ 2 - 0
WQPlayBallLiveQiu/Example/Tests/en.lproj/InfoPlist.strings

@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+

+ 395 - 0
WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/project.pbxproj

@@ -0,0 +1,395 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
+		6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
+		6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
+		6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; };
+		6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; };
+		6003F59E195388D20070C39A /* WQAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* WQAppDelegate.m */; };
+		6003F5A7195388D20070C39A /* WQViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* WQViewController.m */; };
+		6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; };
+		6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; };
+		6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
+		6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
+		6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; };
+		6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
+		71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; };
+		873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		6003F595195388D20070C39A /* WQPlayBallLiveQiu-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "WQPlayBallLiveQiu-Info.plist"; sourceTree = "<group>"; };
+		6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		6003F59B195388D20070C39A /* WQPlayBallLiveQiu-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "WQPlayBallLiveQiu-Prefix.pch"; sourceTree = "<group>"; };
+		6003F59D195388D20070C39A /* WQAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WQAppDelegate.m; sourceTree = "<group>"; };
+		6003F5A6195388D20070C39A /* WQViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WQViewController.m; sourceTree = "<group>"; };
+		6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+		6003F5AE195388D20070C39A /* WQPlayBallLiveQiu_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WQPlayBallLiveQiu_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+		6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = "<group>"; };
+		6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = "<group>"; };
+		606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
+		71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		CE0E0DB61E9D6AD3549BFE83 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = "<group>"; };
+		E5A1BDBE3111475CB10D3C81 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
+		F46F044AACAC29BED53BD296 /* WQPlayBallLiveQiu.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = WQPlayBallLiveQiu.podspec; path = ../WQPlayBallLiveQiu.podspec; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		6003F5AB195388D20070C39A /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */,
+				6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */,
+				6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		6003F581195388D10070C39A = {
+			isa = PBXGroup;
+			children = (
+				60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
+				6003F5B5195388D20070C39A /* Tests */,
+				6003F58C195388D20070C39A /* Frameworks */,
+				6003F58B195388D20070C39A /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		6003F58B195388D20070C39A /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				6003F5AE195388D20070C39A /* WQPlayBallLiveQiu_Tests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		6003F58C195388D20070C39A /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				6003F58D195388D20070C39A /* Foundation.framework */,
+				6003F58F195388D20070C39A /* CoreGraphics.framework */,
+				6003F591195388D20070C39A /* UIKit.framework */,
+				6003F5AF195388D20070C39A /* XCTest.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		6003F5B5195388D20070C39A /* Tests */ = {
+			isa = PBXGroup;
+			children = (
+				6003F5BB195388D20070C39A /* Tests.m */,
+				6003F5B6195388D20070C39A /* Supporting Files */,
+			);
+			path = Tests;
+			sourceTree = "<group>";
+		};
+		6003F5B6195388D20070C39A /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				6003F5B7195388D20070C39A /* Tests-Info.plist */,
+				6003F5B8195388D20070C39A /* InfoPlist.strings */,
+				606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = {
+			isa = PBXGroup;
+			children = (
+				F46F044AACAC29BED53BD296 /* WQPlayBallLiveQiu.podspec */,
+				CE0E0DB61E9D6AD3549BFE83 /* README.md */,
+				E5A1BDBE3111475CB10D3C81 /* LICENSE */,
+			);
+			name = "Podspec Metadata";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		6003F5AD195388D20070C39A /* WQPlayBallLiveQiu_Tests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "WQPlayBallLiveQiu_Tests" */;
+			buildPhases = (
+				6003F5AA195388D20070C39A /* Sources */,
+				6003F5AB195388D20070C39A /* Frameworks */,
+				6003F5AC195388D20070C39A /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = WQPlayBallLiveQiu_Tests;
+			productName = WQPlayBallLiveQiuTests;
+			productReference = 6003F5AE195388D20070C39A /* WQPlayBallLiveQiu_Tests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		6003F582195388D10070C39A /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				CLASSPREFIX = WQ;
+				LastUpgradeCheck = 0720;
+				ORGANIZATIONNAME = menghui;
+				TargetAttributes = {
+					6003F5AD195388D20070C39A = {
+						TestTargetID = 6003F589195388D20070C39A;
+					};
+				};
+			};
+			buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "PROJECT" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 6003F581195388D10070C39A;
+			productRefGroup = 6003F58B195388D20070C39A /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				6003F5AD195388D20070C39A /* WQPlayBallLiveQiu_Tests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		6003F5AC195388D20070C39A /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		6003F5AA195388D20070C39A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				6003F5BC195388D20070C39A /* Tests.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		6003F596195388D20070C39A /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				6003F597195388D20070C39A /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		6003F5B8195388D20070C39A /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				6003F5B9195388D20070C39A /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				71719F9E1E33DC2100824A3D /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		6003F5BD195388D20070C39A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		6003F5BE195388D20070C39A /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				ENABLE_NS_ASSERTIONS = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		6003F5C0195388D20070C39A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "WQPlayBallLiveQiu/WQPlayBallLiveQiu-Prefix.pch";
+				INFOPLIST_FILE = "WQPlayBallLiveQiu/WQPlayBallLiveQiu-Info.plist";
+				MODULE_NAME = ExampleApp;
+				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 4.0;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		6003F5C1195388D20070C39A /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "WQPlayBallLiveQiu/WQPlayBallLiveQiu-Prefix.pch";
+				INFOPLIST_FILE = "WQPlayBallLiveQiu/WQPlayBallLiveQiu-Info.plist";
+				MODULE_NAME = ExampleApp;
+				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 4.0;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+		6003F5C3195388D20070C39A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
+					"$(inherited)",
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				INFOPLIST_FILE = "Tests/Tests-Info.plist";
+				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 4.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WQPlayBallLiveQiu_Example.app/WQPlayBallLiveQiu_Example";
+				WRAPPER_EXTENSION = xctest;
+			};
+			name = Debug;
+		};
+		6003F5C4195388D20070C39A /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
+					"$(inherited)",
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
+				INFOPLIST_FILE = "Tests/Tests-Info.plist";
+				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 4.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WQPlayBallLiveQiu_Example.app/WQPlayBallLiveQiu_Example";
+				WRAPPER_EXTENSION = xctest;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		6003F585195388D10070C39A /* Build configuration list for PBXProject "PROJECT" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				6003F5BD195388D20070C39A /* Debug */,
+				6003F5BE195388D20070C39A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "WQPlayBallLiveQiu_Tests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				6003F5C3195388D20070C39A /* Debug */,
+				6003F5C4195388D20070C39A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 6003F582195388D10070C39A /* Project object */;
+}

+ 7 - 0
WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:WQPlayBallLiveQiu.xcodeproj">
+   </FileRef>
+</Workspace>

+ 101 - 0
WQPlayBallLiveQiu/Example/WQPlayBallLiveQiu.xcodeproj/xcshareddata/xcschemes/WQPlayBallLiveQiu-Example.xcscheme

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0720"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "6003F589195388D20070C39A"
+               BuildableName = "WQPlayBallLiveQiu_Example.app"
+               BlueprintName = "WQPlayBallLiveQiu_Example"
+               ReferencedContainer = "container:WQPlayBallLiveQiu.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "6003F5AD195388D20070C39A"
+               BuildableName = "WQPlayBallLiveQiu_Tests.xctest"
+               BlueprintName = "WQPlayBallLiveQiu_Tests"
+               ReferencedContainer = "container:WQPlayBallLiveQiu.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "6003F589195388D20070C39A"
+            BuildableName = "WQPlayBallLiveQiu_Example.app"
+            BlueprintName = "WQPlayBallLiveQiu_Example"
+            ReferencedContainer = "container:WQPlayBallLiveQiu.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "6003F589195388D20070C39A"
+            BuildableName = "WQPlayBallLiveQiu_Example.app"
+            BlueprintName = "WQPlayBallLiveQiu_Example"
+            ReferencedContainer = "container:WQPlayBallLiveQiu.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "6003F589195388D20070C39A"
+            BuildableName = "WQPlayBallLiveQiu_Example.app"
+            BlueprintName = "WQPlayBallLiveQiu_Example"
+            ReferencedContainer = "container:WQPlayBallLiveQiu.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

+ 19 - 0
WQPlayBallLiveQiu/LICENSE

@@ -0,0 +1,19 @@
+Copyright (c) 2024 xx <xx@163.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 29 - 0
WQPlayBallLiveQiu/README.md

@@ -0,0 +1,29 @@
+# WQPlayBallLiveQiu
+
+[![CI Status](https://img.shields.io/travis/menghui/WQPlayBallLiveQiu.svg?style=flat)](https://travis-ci.org/menghui/WQPlayBallLiveQiu)
+[![Version](https://img.shields.io/cocoapods/v/WQPlayBallLiveQiu.svg?style=flat)](https://cocoapods.org/pods/WQPlayBallLiveQiu)
+[![License](https://img.shields.io/cocoapods/l/WQPlayBallLiveQiu.svg?style=flat)](https://cocoapods.org/pods/WQPlayBallLiveQiu)
+[![Platform](https://img.shields.io/cocoapods/p/WQPlayBallLiveQiu.svg?style=flat)](https://cocoapods.org/pods/WQPlayBallLiveQiu)
+
+## Example
+
+To run the example project, clone the repo, and run `pod install` from the Example directory first.
+
+## Requirements
+
+## Installation
+
+WQPlayBallLiveQiu is available through [CocoaPods](https://cocoapods.org). To install
+it, simply add the following line to your Podfile:
+
+```ruby
+pod 'WQPlayBallLiveQiu'
+```
+
+## Author
+
+menghui, menhui222@163.com
+
+## License
+
+WQPlayBallLiveQiu is available under the MIT license. See the LICENSE file for more info.

+ 50 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu.podspec

@@ -0,0 +1,50 @@
+#
+# Be sure to run `pod lib lint WQPlayBallLiveQiu.podspec' to ensure this is a
+# valid spec before submitting.
+#
+# Any lines starting with a # are optional, but their use is encouraged
+# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
+#
+
+Pod::Spec.new do |s|
+  s.name             = 'WQPlayBallLiveQiu'
+  s.version          = '0.1.0'
+  s.summary          = 'A short description of WQPlayBallLiveQiu.'
+
+# This description is used to generate tags and improve search results.
+#   * Think: What does it do? Why did you write it? What is the focus?
+#   * Try to keep it short, snappy and to the point.
+#   * Write the description between the DESC delimiters below.
+#   * Finally, don't worry about the indent, CocoaPods strips it!
+
+  s.description      = <<-DESC
+TODO: Add long description of the pod here.
+                       DESC
+
+  s.homepage         = 'https://github.com/xx/WQPlayBallLiveQiu'
+  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
+  s.license          = { :type => 'MIT', :file => 'LICENSE' }
+  s.author           = { 'xx' => 'xx' }
+  s.source           = { :git => 'https://github.com/xx/WQPlayBallLiveQiu.git', :tag => s.version.to_s }
+  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
+
+  s.ios.deployment_target = '10.0'
+
+  s.static_framework    = true
+  s.source_files = 'WQPlayBallLiveQiu/Classes/**/*'
+  s.xcconfig = {
+    "USER_HEADER_SEARCH_PATHS" => [
+    '"$(SRCROOT)/../../SDK/inc"'
+    ]
+  }
+  # 关闭 bitcode
+  s.user_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }
+  # s.resource_bundles = {
+  #   'WQPlayBallLiveQiu' => ['WQPlayBallLiveQiu/Assets/*.png']
+  # }
+
+  # s.public_header_files = 'Pod/Classes/**/*.h'
+  # s.frameworks = 'UIKit', 'MapKit'
+   s.dependency 'PBSDK'
+   s.dependency 'MJExtension'
+end

+ 0 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Assets/.gitkeep


+ 0 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/.gitkeep


+ 13 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveAppProxy.h

@@ -0,0 +1,13 @@
+
+
+#import <Foundation/Foundation.h>
+#import "DCUni/UniPluginProtocol.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LiveAppProxy : NSObject <UniPluginProtocol>
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 35 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveAppProxy.m

@@ -0,0 +1,35 @@
+
+#import "LiveAppProxy.h"
+
+@implementation LiveAppProxy
+
+- (void)onCreateUniPlugin {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+- (BOOL)application:(UIApplication *_Nullable)application didFinishLaunchingWithOptions:(NSDictionary *_Nullable)launchOptions {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+    return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication * _Nullable)application {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *_Nullable)application {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *_Nullable)application {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *_Nullable)application {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+- (void)applicationWillTerminate:(UIApplication *_Nullable)application {
+    NSLog(@"UniPluginProtocol Func: %@,%s",self,__func__);
+}
+
+@end

+ 17 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveListComponent.h

@@ -0,0 +1,17 @@
+//
+//  TestComponent.h
+//  DCTestUniPlugin
+//
+//  Created by XHY on 2020/4/23.
+//  Copyright © 2020 DCloud. All rights reserved.
+//
+
+#import "DCUni/DCUniComponent.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LiveListComponent : DCUniComponent
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 64 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveListComponent.m

@@ -0,0 +1,64 @@
+//
+//  TestComponent.m
+//  DCTestUniPlugin
+//
+//  Created by XHY on 2020/4/23.
+//  Copyright © 2020 DCloud. All rights reserved.
+//
+
+#import "LiveListComponent.h"
+#import "DCUni/DCUniConvert.h"
+#import <MapKit/MapKit.h>
+
+@interface LiveListComponent () <MKMapViewDelegate>
+
+
+
+@end
+
+@implementation LiveListComponent
+
+
+
+- (void)onCreateComponentWithRef:(NSString *)ref type:(NSString *)type styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes events:(NSArray *)events uniInstance:(DCUniSDKInstance *)uniInstance
+{
+   
+}
+
+- (UIView *)loadView {
+    return [UILabel new];
+}
+
+- (void)viewDidLoad {
+    
+    ((UILabel*)self.view).text = @"LiveListComponent";
+    
+}
+
+/// 前端更新属性回调方法
+/// @param attributes 更新的属性
+- (void)updateAttributes:(NSDictionary *)attributes {
+    // 解析属性
+    if (attributes[@"showsTraffic"]) {
+      
+    }
+}
+
+/// 前端注册的事件会调用此方法
+/// @param eventName 事件名称
+- (void)addEvent:(NSString *)eventName {
+    if ([eventName isEqualToString:@"mapLoaded"]) {
+      
+    }
+}
+
+/// 对应的移除事件回调方法
+/// @param eventName 事件名称
+- (void)removeEvent:(NSString *)eventName {
+    if ([eventName isEqualToString:@"mapLoaded"]) {
+       
+    }
+}
+
+
+@end

+ 20 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveModule.h

@@ -0,0 +1,20 @@
+//
+//  TestModule.h
+//  DCTestUniPlugin
+//
+//  Created by XHY on 2020/4/22.
+//  Copyright © 2020 DCloud. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "DCUni/DCUniModule.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LiveModule : DCUniModule
+
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 77 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/LiveModule.m

@@ -0,0 +1,77 @@
+//
+//  TestModule.m
+//  DCTestUniPlugin
+//
+//  Created by XHY on 2020/4/22.
+//  Copyright © 2020 DCloud. All rights reserved.
+//
+
+#import "LiveModule.h"
+#import "WQOptions.h"
+#import <MJExtension/MJExtension.h>
+#import <PBSDK/PBSDK.h>
+
+@implementation LiveModule
+- (instancetype)init{
+    self = [super init];
+    if(self){
+        
+    }
+    return self;
+}
+
+
+// 通过宏 UNI_EXPORT_METHOD_SYNC 将同步方法暴露给 js 端
+UNI_EXPORT_METHOD_SYNC(@selector(sendCommand:))
+
+/// 同步方法(注:同步方法会在 js 线程执行)
+/// @param options js 端调用方法时传递的参数
+- (void)sendCommand:(NSString *)jsonString {
+    // options 为 js 端调用此方法时传递的参数
+    NSLog(@"%@",jsonString);
+
+    /*
+     可以在该方法中实现原生功能,然后直接通过 return 返回参数给 js
+     */
+
+    // 同步返回参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型
+
+}
+
+// 通过宏 UNI_EXPORT_METHOD 将异步方法暴露给 js 端
+UNI_EXPORT_METHOD(@selector(setupConfigCallback:))
+
+/// 异步方法(注:异步方法会在主线程(UI线程)执行)
+/// @param options js 端调用方法时传递的参数
+/// @param callback 回调方法,回传参数给 js 端
+- (void)setupConfigCallback:(UniModuleKeepAliveCallback)callback {
+    // options 为 js 端调用此方法时传递的参数
+//    NSLog(@"%@",options);
+//    {
+//        //过滤异常数据
+//        NSMutableDictionary *parsms = [NSMutableDictionary dictionary];
+//        [options  enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
+//            if(![obj isKindOfClass:NSNull.class]){
+//                parsms[key] = obj;
+//            }
+//        }];
+//        options = parsms;
+//    }
+//    
+//    WQOptions *parsms =  [WQOptions mj_objectWithKeyValues:options];
+//    
+//    int cmd= parsms.cmd;
+//    if(cmd == 2000){
+//        [PBSDK.shared openLive];
+//    }
+    
+    // 可以在该方法中实现原生能力,然后通过 callback 回调到 js
+
+    // 回调方法,传递参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型
+//    if (callback) {
+//        // 第一个参数为回传给js端的数据,第二个参数为标识,表示该回调方法是否支持多次调用,如果原生端需要多次回调js端则第二个参数传 YES;
+//        callback(@"success",NO);
+//    }
+}
+
+@end

+ 0 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/ReplaceMe.m


+ 23 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/WQOptions.h

@@ -0,0 +1,23 @@
+//
+//  WQOptions.h
+//  WQPlayBallLiveQiu
+//
+//  Created by 章玲 on 2024/12/27.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface WQOptions : NSObject
+
+
+@property (nonatomic, assign) int cmd;
+
+
+@property (nonatomic, copy) NSDictionary *data;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 26 - 0
WQPlayBallLiveQiu/WQPlayBallLiveQiu/Classes/WQOptions.m

@@ -0,0 +1,26 @@
+//
+//  WQOptions.m
+//  WQPlayBallLiveQiu
+//
+//  Created by 章玲 on 2024/12/27.
+//
+
+#import "WQOptions.h"
+#import <MJExtension/MJExtension.h>
+
+@implementation WQOptions
+
+
+- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property{
+    if ([oldValue isKindOfClass:[NSNull class]]) {
+        if ([oldValue isKindOfClass:[NSArray class]]) {
+            return @[];
+        } else if ([oldValue isKindOfClass:[NSDictionary class]]) {
+            return @{};
+        } else {
+            return @"";
+        }
+    }
+    return oldValue;
+}
+@end