Commit 63186b06 authored by Alex朱枝文's avatar Alex朱枝文

增加录屏插件

parent f1d289bc
......@@ -80,6 +80,11 @@
043F0EB22DE85717003354EB /* YHTUIMessageListManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043F0EB12DE85717003354EB /* YHTUIMessageListManager.swift */; };
043F0EB32DE85717003354EB /* YHTencentDeskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043F0EB02DE85717003354EB /* YHTencentDeskManager.swift */; };
043F0EB52DF85BC5003354EB /* TUICoreCustomTheme.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 043F0EB42DF85BC5003354EB /* TUICoreCustomTheme.bundle */; };
043F0ECC2E02A60C003354EB /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 043F0ECB2E02A60B003354EB /* ReplayKit.framework */; };
043F0ED32E02A60C003354EB /* yinheReplayExt.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 043F0ECA2E02A60B003354EB /* yinheReplayExt.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
043F0EDF2E02A894003354EB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 043F0EDE2E02A894003354EB /* Accelerate.framework */; };
043F0EE02E02A8AA003354EB /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 04EA376E2BEA070500DBAF64 /* libc++.tbd */; };
043F0EE22E02A8BC003354EB /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 043F0EE12E02A8BC003354EB /* VideoToolbox.framework */; };
045647572D7976880001D831 /* YHHKVisaRenewalApplicationVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045647562D7976880001D831 /* YHHKVisaRenewalApplicationVC.swift */; };
045647592D79877E0001D831 /* YHHKVisaRenewalApplicationHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045647582D79877E0001D831 /* YHHKVisaRenewalApplicationHeader.swift */; };
045C0F7F2D12CA5F00BD2DC0 /* submit_page_scroll.gif in Resources */ = {isa = PBXBuildFile; fileRef = 045C0F4F2D12CA5E00BD2DC0 /* submit_page_scroll.gif */; };
......@@ -1287,6 +1292,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
043F0ED12E02A60C003354EB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A5573EC62B317BFF00D98EC0 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 043F0EC92E02A60B003354EB;
remoteInfo = yinheReplayExt;
};
A5573EE52B317C0100D98EC0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A5573EC62B317BFF00D98EC0 /* Project object */;
......@@ -1304,6 +1316,17 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
043F0ED42E02A60C003354EB /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
043F0ED32E02A60C003354EB /* yinheReplayExt.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
04808C092B4686C10056D53C /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
......@@ -1391,6 +1414,10 @@
043F0EB02DE85717003354EB /* YHTencentDeskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHTencentDeskManager.swift; sourceTree = "<group>"; };
043F0EB12DE85717003354EB /* YHTUIMessageListManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHTUIMessageListManager.swift; sourceTree = "<group>"; };
043F0EB42DF85BC5003354EB /* TUICoreCustomTheme.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = TUICoreCustomTheme.bundle; sourceTree = "<group>"; };
043F0ECA2E02A60B003354EB /* yinheReplayExt.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = yinheReplayExt.appex; sourceTree = BUILT_PRODUCTS_DIR; };
043F0ECB2E02A60B003354EB /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
043F0EDE2E02A894003354EB /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
043F0EE12E02A8BC003354EB /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; };
045647562D7976880001D831 /* YHHKVisaRenewalApplicationVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKVisaRenewalApplicationVC.swift; sourceTree = "<group>"; };
045647582D79877E0001D831 /* YHHKVisaRenewalApplicationHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKVisaRenewalApplicationHeader.swift; sourceTree = "<group>"; };
045C0A142D12CA5E00BD2DC0 /* YHBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewController.swift; sourceTree = "<group>"; };
......@@ -2611,7 +2638,32 @@
DF4796A13E2592E1653226DE /* Pods-galaxy.uatrelease.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-galaxy.uatrelease.xcconfig"; path = "Target Support Files/Pods-galaxy/Pods-galaxy.uatrelease.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
043F0ED92E02A60C003354EB /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 043F0EC92E02A60B003354EB /* yinheReplayExt */;
};
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
043F0ECD2E02A60C003354EB /* yinheReplayExt */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (043F0ED92E02A60C003354EB /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = yinheReplayExt; sourceTree = "<group>"; };
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
043F0EC72E02A60B003354EB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
043F0EDF2E02A894003354EB /* Accelerate.framework in Frameworks */,
043F0ECC2E02A60C003354EB /* ReplayKit.framework in Frameworks */,
043F0EE22E02A8BC003354EB /* VideoToolbox.framework in Frameworks */,
043F0EE02E02A8AA003354EB /* libc++.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A5573ECB2B317BFF00D98EC0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
......@@ -6881,12 +6933,15 @@
8D4DE9CA401A76BB1ECBE46E /* Frameworks */ = {
isa = PBXGroup;
children = (
043F0EE12E02A8BC003354EB /* VideoToolbox.framework */,
043F0EDE2E02A894003354EB /* Accelerate.framework */,
04EA376E2BEA070500DBAF64 /* libc++.tbd */,
04EA376C2BEA06EF00DBAF64 /* WebKit.framework */,
0468D42F2B5654B500CFB916 /* SystemConfiguration.framework */,
0468D42D2B5654A500CFB916 /* CoreTelephony.framework */,
0468D42C2B56549200CFB916 /* libresolv.tbd */,
987C69D43AE8D85DC1930DCF /* Pods_galaxy.framework */,
043F0ECB2E02A60B003354EB /* ReplayKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
......@@ -6898,6 +6953,7 @@
045C0F7E2D12CA5E00BD2DC0 /* galaxy */,
A5573EE72B317C0100D98EC0 /* galaxyTests */,
A5573EF12B317C0100D98EC0 /* galaxyUITests */,
043F0ECD2E02A60C003354EB /* yinheReplayExt */,
A5573ECF2B317BFF00D98EC0 /* Products */,
4758815B24BAF3CAA24EC6A8 /* Pods */,
8D4DE9CA401A76BB1ECBE46E /* Frameworks */,
......@@ -6911,6 +6967,7 @@
A5573ECE2B317BFF00D98EC0 /* galaxy.app */,
A5573EE42B317C0100D98EC0 /* galaxyTests.xctest */,
A5573EEE2B317C0100D98EC0 /* galaxyUITests.xctest */,
043F0ECA2E02A60B003354EB /* yinheReplayExt.appex */,
);
name = Products;
sourceTree = "<group>";
......@@ -6935,6 +6992,28 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
043F0EC92E02A60B003354EB /* yinheReplayExt */ = {
isa = PBXNativeTarget;
buildConfigurationList = 043F0EDA2E02A60C003354EB /* Build configuration list for PBXNativeTarget "yinheReplayExt" */;
buildPhases = (
043F0EC62E02A60B003354EB /* Sources */,
043F0EC72E02A60B003354EB /* Frameworks */,
043F0EC82E02A60B003354EB /* Resources */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
043F0ECD2E02A60C003354EB /* yinheReplayExt */,
);
name = yinheReplayExt;
packageProductDependencies = (
);
productName = yinheReplayExt;
productReference = 043F0ECA2E02A60B003354EB /* yinheReplayExt.appex */;
productType = "com.apple.product-type.app-extension";
};
A5573ECD2B317BFF00D98EC0 /* galaxy */ = {
isa = PBXNativeTarget;
buildConfigurationList = A5573EF82B317C0100D98EC0 /* Build configuration list for PBXNativeTarget "galaxy" */;
......@@ -6947,10 +7026,12 @@
04808C092B4686C10056D53C /* Embed Frameworks */,
47BB31035D3DBEB9235AC809 /* [CP] Copy Pods Resources */,
04794DEC2D83D71100F14A4E /* SwiftLint */,
043F0ED42E02A60C003354EB /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
043F0ED22E02A60C003354EB /* PBXTargetDependency */,
);
name = galaxy;
productName = galaxy;
......@@ -7001,10 +7082,13 @@
attributes = {
BuildIndependentTargetsInParallel = 1;
CLASSPREFIX = YH;
LastSwiftUpdateCheck = 1510;
LastSwiftUpdateCheck = 1600;
LastUpgradeCheck = 1540;
ORGANIZATIONNAME = "https://www.galaxy-immi.com";
TargetAttributes = {
043F0EC92E02A60B003354EB = {
CreatedOnToolsVersion = 16.0;
};
A5573ECD2B317BFF00D98EC0 = {
CreatedOnToolsVersion = 15.1;
};
......@@ -7035,11 +7119,19 @@
A5573ECD2B317BFF00D98EC0 /* galaxy */,
A5573EE32B317C0100D98EC0 /* galaxyTests */,
A5573EED2B317C0100D98EC0 /* galaxyUITests */,
043F0EC92E02A60B003354EB /* yinheReplayExt */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
043F0EC82E02A60B003354EB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
A5573ECC2B317BFF00D98EC0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
......@@ -7185,6 +7277,13 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
043F0EC62E02A60B003354EB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
A5573ECA2B317BFF00D98EC0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
......@@ -8435,6 +8534,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
043F0ED22E02A60C003354EB /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 043F0EC92E02A60B003354EB /* yinheReplayExt */;
targetProxy = 043F0ED12E02A60C003354EB /* PBXContainerItemProxy */;
};
A5573EE62B317C0100D98EC0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = A5573ECD2B317BFF00D98EC0 /* galaxy */;
......@@ -8448,6 +8552,118 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
043F0ED52E02A60C003354EB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = yinheReplayExt/yinheReplayExt.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = RXHYW88XR7;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = yinheReplayExt/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "银河港生活";
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy.yinheReplayExt;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
043F0ED62E02A60C003354EB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = yinheReplayExt/yinheReplayExt.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = RXHYW88XR7;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = yinheReplayExt/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "银河港生活";
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy.yinheReplayExt;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
043F0ED72E02A60C003354EB /* UatRelease */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = yinheReplayExt/yinheReplayExt.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = RXHYW88XR7;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = yinheReplayExt/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "银河港生活";
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy.yinheReplayExt;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = UatRelease;
};
043F0ED82E02A60C003354EB /* TestEnv */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = yinheReplayExt/yinheReplayExt.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = RXHYW88XR7;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = yinheReplayExt/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "银河港生活";
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.intelligence.galaxy.yinheReplayExt;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = TestEnv;
};
A53B61132BB19B840010B573 /* TestEnv */ = {
isa = XCBuildConfiguration;
buildSettings = {
......@@ -9045,6 +9261,17 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
043F0EDA2E02A60C003354EB /* Build configuration list for PBXNativeTarget "yinheReplayExt" */ = {
isa = XCConfigurationList;
buildConfigurations = (
043F0ED52E02A60C003354EB /* Debug */,
043F0ED62E02A60C003354EB /* Release */,
043F0ED72E02A60C003354EB /* UatRelease */,
043F0ED82E02A60C003354EB /* TestEnv */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A5573EC92B317BFF00D98EC0 /* Build configuration list for PBXProject "galaxy" */ = {
isa = XCConfigurationList;
buildConfigurations = (
......
......@@ -10,10 +10,12 @@ import IQKeyboardManagerSwift
import UIKit
import TUICore
import TUIChat
import TUIRoomKit
class YHTencentDeskManager: NSObject {
static let shared = YHTencentDeskManager()
let APPGROUP = "group.com.intelligence.galaxy"
private lazy var viewModel: YHButlerServiceViewModel = YHButlerServiceViewModel()
......@@ -32,6 +34,8 @@ class YHTencentDeskManager: NSObject {
private func setupConfig() {
/// 注释掉群工具:自定义
TUIChatConfig.default().enableWelcomeCustomMessage = false
/// 多人会议设置自己的APPGROUP
ConferenceSession.sharedInstance.setAppGroup(APPGROUP)
}
func loginIM() {
......
......@@ -33,5 +33,9 @@
<string>webcredentials:example.com</string>
<string>webcredentials:example.com</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.intelligence.galaxy</string>
</array>
</dict>
</plist>
......@@ -33,5 +33,9 @@
<string>webcredentials:example.com</string>
<string>webcredentials:example.com</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.intelligence.galaxy</string>
</array>
</dict>
</plist>
......@@ -33,5 +33,9 @@
<string>webcredentials:example.com</string>
<string>webcredentials:example.com</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.intelligence.galaxy</string>
</array>
</dict>
</plist>
<?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>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.broadcast-services-upload</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).SampleHandler</string>
<key>RPBroadcastProcessMode</key>
<string>RPBroadcastProcessModeSampleBuffer</string>
</dict>
</dict>
</plist>
//
// SampleHandler.swift
// yinheReplayExt
//
// Created by alexzzw on 2025/6/18.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import ReplayKit
import TXLiteAVSDK_ReplayKitExt
let APPGROUP = "group.com.intelligence.galaxy"
class SampleHandler: RPBroadcastSampleHandler, TXReplayKitExtDelegate {
let recordScreenKey = Notification.Name.init("TRTCRecordScreenKey")
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
// User has requested to start the broadcast. Setup info from the UI extension can be supplied but optional.
TXReplayKitExt.sharedInstance().setup(withAppGroup: APPGROUP, delegate: self)
}
override func broadcastPaused() {
// User has requested to pause the broadcast. Samples will stop being delivered.
}
override func broadcastResumed() {
// User has requested to resume the broadcast. Samples delivery will resume.
}
override func broadcastFinished() {
// User has requested to finish the broadcast.
TXReplayKitExt.sharedInstance().broadcastFinished()
}
func broadcastFinished(_ broadcast: TXReplayKitExt, reason: TXReplayKitExtReason) {
var tip = ""
switch reason {
case TXReplayKitExtReason.requestedByMain:
tip = "屏幕共享已结束"
break
case TXReplayKitExtReason.disconnected:
tip = "应用断开"
break
case TXReplayKitExtReason.versionMismatch:
tip = "集成错误(SDK 版本号不相符合)"
break
default:
break
}
let error = NSError(domain: NSStringFromClass(self.classForCoder), code: 0, userInfo: [NSLocalizedFailureReasonErrorKey:tip])
finishBroadcastWithError(error)
}
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
switch sampleBufferType {
case RPSampleBufferType.video:
// Handle video sample buffer
TXReplayKitExt.sharedInstance().send(sampleBuffer, with: .video)
break
case RPSampleBufferType.audioApp:
// Handle audio sample buffer for app audio
break
case RPSampleBufferType.audioMic:
// Handle audio sample buffer for mic audio
break
@unknown default:
// Handle other sample buffer types
fatalError("Unknown type of sample buffer")
}
}
}
<?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>AvailableLibraries</key>
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>TXLiteAVSDK_ReplayKitExt.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_armv7</string>
<key>LibraryPath</key>
<string>TXLiteAVSDK_ReplayKitExt.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>armv7</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>
/*
* Copyright (c) 2025 Tencent. All Rights Reserved.
*
*/
#import <TXLiteAVSDK_ReplayKitExt/TXReplayKitExt.h>
/*
* Module: TXReplayKitExt @ TXLiteAVSDK
*
* Function: 腾讯云 ReplayKit 录屏功能在Extension中的主要接口类
*
* Version: <:Version:>
*/
/// @defgroup TXReplayKitExt_ios TXReplayKitExt
/// 腾讯云 ReplayKit 录屏功能在Extension中的主要接口类
/// @{
#import <CoreMedia/CoreMedia.h>
#import <Foundation/Foundation.h>
#import <ReplayKit/ReplayKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, TXReplayKitExtReason) {
/// 主进程请求结束
TXReplayKitExtReasonRequestedByMain,
/// 链接断开,主进程退出
TXReplayKitExtReasonDisconnected,
/// 版本号与主进程SDK不符
TXReplayKitExtReasonVersionMismatch
};
@protocol TXReplayKitExtDelegate;
/// 屏幕分享主入口类
API_AVAILABLE(ios(11.0))
__attribute__((visibility("default"))) @interface TXReplayKitExt : NSObject
/// 获取单例
+ (instancetype)sharedInstance;
/// 初始化方法
///
/// 需要在 RPBroadcastSampleHandler 的实现类中的 broadcastStartedWithSetupInfo 方法中调用
/// @param appGroup App group ID
/// @param delegate 回调对象
- (void)setupWithAppGroup:(NSString *)appGroup delegate:(id<TXReplayKitExtDelegate>)delegate;
/// 录屏暂停方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastPaused,在 broadcastPaused
/// 方法中调用
- (void)broadcastPaused;
/// 录屏恢复方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastResumed,在
/// broadcastResumed 方法中调用
- (void)broadcastResumed;
/// 录屏完成方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastFinished,在
/// broadcastFinished 方法中调用
- (void)broadcastFinished;
/// 媒体数据(音视频)发送方法
///
/// 需要在 RPBroadcastSampleHandler 的实现类中的 processSampleBuffer: 方法中调用
///
/// @param sampleBuffer 系统回调的视频或音频帧
/// @param sampleBufferType 媒体输入类型
/// @note
/// - sampleBufferType 当前支持 RPSampleBufferTypeVideo 和 RPSampleBufferTypeAudioApp
/// 类型的数据帧处理。
/// - RPSampleBufferTypeAudioMic 不支持,请在主 app 处理麦克风采集数据
- (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer
withType:(RPSampleBufferType)sampleBufferType;
/// 视频发送方法
/// 已废弃,请使用 - (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer
/// withType:(RPSampleBufferType)sampleBufferType; 代替 需要在 RPBroadcastSampleHandler 的实现类中的
/// processSampleBuffer: 方法中调用
///
/// @param sampleBuffer 系统回调的视频帧
- (void)sendVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
__attribute__((deprecated("use sendSampleBuffer:withType instead")));
@end
API_AVAILABLE(ios(11.0))
@protocol TXReplayKitExtDelegate <NSObject>
/// 录屏完成回调
///
/// @param broadcast 发出回调的实例
/// @param reason 结束原因代码, 参见 TXReplayKitExtReason
- (void)broadcastFinished:(TXReplayKitExt *)broadcast reason:(TXReplayKitExtReason)reason;
@end
NS_ASSUME_NONNULL_END
/// @}
<?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>BuildMachineOSBuild</key>
<string>21G83</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>TXLiteAVSDK_ReplayKitExt</string>
<key>CFBundleIdentifier</key>
<string>com.tencent.TXLiteAVSDK.ReplayKitExt</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>TXLiteAVSDK_ReplayKitExt</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>12.6.18866</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>iPhoneOS</string>
</array>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>19F64</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>DTPlatformVersion</key>
<string>15.5</string>
<key>DTSDKBuild</key>
<string>19F64</string>
<key>DTSDKName</key>
<string>iphoneos15.5</string>
<key>DTXcode</key>
<string>1341</string>
<key>DTXcodeBuild</key>
<string>13F100</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<key>NSPrincipalClass</key>
<string></string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
</plist>
framework module TXLiteAVSDK_ReplayKitExt {
umbrella header "TXLiteAVSDK_ReplayKitExt.h"
export *
module * { export * }
}
<?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>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhotosorVideos</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeAudioData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
</array>
</dict>
</plist>
/*
* Copyright (c) 2025 Tencent. All Rights Reserved.
*
*/
#import <TXLiteAVSDK_ReplayKitExt/TXReplayKitExt.h>
/*
* Module: TXReplayKitExt @ TXLiteAVSDK
*
* Function: 腾讯云 ReplayKit 录屏功能在Extension中的主要接口类
*
* Version: <:Version:>
*/
/// @defgroup TXReplayKitExt_ios TXReplayKitExt
/// 腾讯云 ReplayKit 录屏功能在Extension中的主要接口类
/// @{
#import <CoreMedia/CoreMedia.h>
#import <Foundation/Foundation.h>
#import <ReplayKit/ReplayKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, TXReplayKitExtReason) {
/// 主进程请求结束
TXReplayKitExtReasonRequestedByMain,
/// 链接断开,主进程退出
TXReplayKitExtReasonDisconnected,
/// 版本号与主进程SDK不符
TXReplayKitExtReasonVersionMismatch
};
@protocol TXReplayKitExtDelegate;
/// 屏幕分享主入口类
API_AVAILABLE(ios(11.0))
__attribute__((visibility("default"))) @interface TXReplayKitExt : NSObject
/// 获取单例
+ (instancetype)sharedInstance;
/// 初始化方法
///
/// 需要在 RPBroadcastSampleHandler 的实现类中的 broadcastStartedWithSetupInfo 方法中调用
/// @param appGroup App group ID
/// @param delegate 回调对象
- (void)setupWithAppGroup:(NSString *)appGroup delegate:(id<TXReplayKitExtDelegate>)delegate;
/// 录屏暂停方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastPaused,在 broadcastPaused
/// 方法中调用
- (void)broadcastPaused;
/// 录屏恢复方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastResumed,在
/// broadcastResumed 方法中调用
- (void)broadcastResumed;
/// 录屏完成方法
///
/// 通过系统控制中心停止录屏时,会回调 RPBroadcastSampleHandler.broadcastFinished,在
/// broadcastFinished 方法中调用
- (void)broadcastFinished;
/// 媒体数据(音视频)发送方法
///
/// 需要在 RPBroadcastSampleHandler 的实现类中的 processSampleBuffer: 方法中调用
///
/// @param sampleBuffer 系统回调的视频或音频帧
/// @param sampleBufferType 媒体输入类型
/// @note
/// - sampleBufferType 当前支持 RPSampleBufferTypeVideo 和 RPSampleBufferTypeAudioApp
/// 类型的数据帧处理。
/// - RPSampleBufferTypeAudioMic 不支持,请在主 app 处理麦克风采集数据
- (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer
withType:(RPSampleBufferType)sampleBufferType;
/// 视频发送方法
/// 已废弃,请使用 - (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer
/// withType:(RPSampleBufferType)sampleBufferType; 代替 需要在 RPBroadcastSampleHandler 的实现类中的
/// processSampleBuffer: 方法中调用
///
/// @param sampleBuffer 系统回调的视频帧
- (void)sendVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
__attribute__((deprecated("use sendSampleBuffer:withType instead")));
@end
API_AVAILABLE(ios(11.0))
@protocol TXReplayKitExtDelegate <NSObject>
/// 录屏完成回调
///
/// @param broadcast 发出回调的实例
/// @param reason 结束原因代码, 参见 TXReplayKitExtReason
- (void)broadcastFinished:(TXReplayKitExt *)broadcast reason:(TXReplayKitExtReason)reason;
@end
NS_ASSUME_NONNULL_END
/// @}
<?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>BuildMachineOSBuild</key>
<string>21G83</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>TXLiteAVSDK_ReplayKitExt</string>
<key>CFBundleIdentifier</key>
<string>com.tencent.TXLiteAVSDK.ReplayKitExt</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>TXLiteAVSDK_ReplayKitExt</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>12.6.18866</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>iPhoneSimulator</string>
</array>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>iphonesimulator</string>
<key>DTPlatformVersion</key>
<string>15.5</string>
<key>DTSDKBuild</key>
<string>19F64</string>
<key>DTSDKName</key>
<string>iphonesimulator15.5</string>
<key>DTXcode</key>
<string>1341</string>
<key>DTXcodeBuild</key>
<string>13F100</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<key>NSPrincipalClass</key>
<string></string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
</plist>
framework module TXLiteAVSDK_ReplayKitExt {
umbrella header "TXLiteAVSDK_ReplayKitExt.h"
export *
module * { export * }
}
<?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>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhotosorVideos</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeAudioData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
</array>
</dict>
</plist>
<?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>com.apple.security.application-groups</key>
<array>
<string>group.com.intelligence.galaxy</string>
</array>
</dict>
</plist>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment