增加换肤功能
This commit is contained in:
@@ -12,7 +12,9 @@
|
||||
95C29EA62E19166700F2524D /* QXLiveScreen.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
95C29EAB2E19173300F2524D /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
||||
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||
95C304262E4A05E3004B2D82 /* QXLiveScreen.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
||||
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||
95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
||||
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
||||
@@ -58,12 +60,12 @@
|
||||
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
||||
remoteInfo = QXLiveScreen;
|
||||
};
|
||||
95C304242E4A05D7004B2D82 /* PBXContainerItemProxy */ = {
|
||||
95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
||||
remoteInfo = QXLiveScreen;
|
||||
remoteGlobalIDString = 95C327412E4C4068004B2D82;
|
||||
remoteInfo = QXLiveScreenDev;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
@@ -85,7 +87,7 @@
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
95C304262E4A05E3004B2D82 /* QXLiveScreen.appex in Embed Foundation Extensions */,
|
||||
95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
|
||||
);
|
||||
name = "Embed Foundation Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -106,6 +108,8 @@
|
||||
95C292AB2E18ED4A00F2524D /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
|
||||
95C292AE2E18ED6300F2524D /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
|
||||
95C29E9D2E19166700F2524D /* QXLiveScreen.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = QXLiveScreen.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = QXLiveScreenDev.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95C3274C2E4C4068004B2D82 /* QXLiveScreen copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "QXLiveScreen copy-Info.plist"; path = "/Users/qixing/Desktop/项目/羽声/featherVoice/QXLiveScreen copy-Info.plist"; sourceTree = "<absolute>"; };
|
||||
95C3F0022E49F44A004B2D82 /* QXLiveDev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QXLiveDev.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95F204FA2DEF0AA10031E710 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||
95F204FC2DEF0AAC0031E710 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
|
||||
@@ -136,6 +140,13 @@
|
||||
);
|
||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
||||
};
|
||||
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */ = {
|
||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
||||
membershipExceptions = (
|
||||
Info.plist,
|
||||
);
|
||||
target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
|
||||
};
|
||||
95C3F0032E49F44A004B2D82 /* Exceptions for "QXLive" folder in "QXLiveDev" target */ = {
|
||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
||||
membershipExceptions = (
|
||||
@@ -179,6 +190,7 @@
|
||||
exceptions = (
|
||||
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
|
||||
95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */,
|
||||
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */,
|
||||
);
|
||||
path = QXLiveScreen;
|
||||
sourceTree = "<group>";
|
||||
@@ -227,6 +239,15 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C327432E4C4068004B2D82 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */,
|
||||
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C3EFEE2E49F44A004B2D82 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -293,6 +314,7 @@
|
||||
9593D7182DB9C95C0082CA57 /* Products */,
|
||||
2B243E5E8CFE9B1EF0A08846 /* Pods */,
|
||||
4B6F40DB8328A2B2BB1BF79D /* Frameworks */,
|
||||
95C3274C2E4C4068004B2D82 /* QXLiveScreen copy-Info.plist */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
@@ -304,6 +326,7 @@
|
||||
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */,
|
||||
95C29E9D2E19166700F2524D /* QXLiveScreen.appex */,
|
||||
95C3F0022E49F44A004B2D82 /* QXLiveDev.app */,
|
||||
95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -398,6 +421,26 @@
|
||||
productReference = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
95C327412E4C4068004B2D82 /* QXLiveScreenDev */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 95C327472E4C4068004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveScreenDev" */;
|
||||
buildPhases = (
|
||||
95C327422E4C4068004B2D82 /* Sources */,
|
||||
95C327432E4C4068004B2D82 /* Frameworks */,
|
||||
95C327462E4C4068004B2D82 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
95C29E9F2E19166700F2524D /* QXLiveScreen */,
|
||||
);
|
||||
name = QXLiveScreenDev;
|
||||
productName = QXLiveScreen;
|
||||
productReference = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
95C3EFE92E49F44A004B2D82 /* QXLiveDev */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 95C3EFFF2E49F44A004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveDev" */;
|
||||
@@ -413,7 +456,7 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
95C304252E4A05D7004B2D82 /* PBXTargetDependency */,
|
||||
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */,
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
9593D7192DB9C95C0082CA57 /* QXLive */,
|
||||
@@ -470,6 +513,7 @@
|
||||
9593D73B2DB9C95E0082CA57 /* QXLiveUITests */,
|
||||
95C29E9C2E19166700F2524D /* QXLiveScreen */,
|
||||
95C3EFE92E49F44A004B2D82 /* QXLiveDev */,
|
||||
95C327412E4C4068004B2D82 /* QXLiveScreenDev */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -503,6 +547,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C327462E4C4068004B2D82 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C3EFFA2E49F44A004B2D82 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -656,6 +707,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C327422E4C4068004B2D82 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
95C3EFED2E49F44A004B2D82 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -681,10 +739,10 @@
|
||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
||||
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
|
||||
};
|
||||
95C304252E4A05D7004B2D82 /* PBXTargetDependency */ = {
|
||||
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
||||
targetProxy = 95C304242E4A05D7004B2D82 /* PBXContainerItemProxy */;
|
||||
target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
|
||||
targetProxy = 95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
@@ -698,7 +756,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
@@ -733,7 +791,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
@@ -758,7 +816,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
@@ -793,7 +851,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.3;
|
||||
MARKETING_VERSION = 1.1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
@@ -1046,6 +1104,58 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
95C327482E4C4068004B2D82 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = QXLiveScreen/QXLiveScreen.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test.QXLiveScreen;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
95C327492E4C4068004B2D82 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = QXLiveScreen/QXLiveScreen.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "QXLiveScreen copy-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "羽声";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test.QXLiveScreen;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
95C3F0002E49F44A004B2D82 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */;
|
||||
@@ -1091,7 +1201,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
@@ -1151,7 +1261,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
@@ -1213,6 +1323,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
95C327472E4C4068004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveScreenDev" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
95C327482E4C4068004B2D82 /* Debug */,
|
||||
95C327492E4C4068004B2D82 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
95C3EFFF2E49F44A004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveDev" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1620"
|
||||
version = "2.0">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES"
|
||||
buildArchitectures = "Automatic">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "95C327412E4C4068004B2D82"
|
||||
BuildableName = "QXLiveScreenDev.appex"
|
||||
BlueprintName = "QXLiveScreenDev"
|
||||
ReferencedContainer = "container:QXLive.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
shouldAutocreateTestPlan = "YES">
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = ""
|
||||
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
|
||||
launchStyle = "0"
|
||||
askForAppToLaunch = "Yes"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES"
|
||||
launchAutomaticallySubstyle = "2">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
askForAppToLaunch = "Yes"
|
||||
launchAutomaticallySubstyle = "2">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "95C327412E4C4068004B2D82"
|
||||
BuildableName = "QXLiveScreenDev.appex"
|
||||
BlueprintName = "QXLiveScreenDev"
|
||||
ReferencedContainer = "container:QXLive.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -12,13 +12,18 @@
|
||||
<key>QXLiveDev.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>64</integer>
|
||||
<integer>63</integer>
|
||||
</dict>
|
||||
<key>QXLiveScreen.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>QXLiveScreenDev.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>64</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
|
||||
Binary file not shown.
@@ -208,38 +208,6 @@
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "110736A2-4444-4893-BAF4-09076130DE0E"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "QXLive/Other/AppDelegate+Login.m"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "35"
|
||||
endingLineNumber = "35"
|
||||
landmarkName = "-ATAuthSDK"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "2A7AB14C-7765-4265-8902-3218C4F8FD59"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "QXLive/Login(登录)/Controlller/QXLoginViewController.m"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "208"
|
||||
endingLineNumber = "208"
|
||||
landmarkName = "-startLoginWithModel:complete:"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
|
||||
16
QXLive/Base/QXAppStartViewController.h
Normal file
16
QXLive/Base/QXAppStartViewController.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// QXAppStartViewController.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/8/12.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXAppStartViewController : UIViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
107
QXLive/Base/QXAppStartViewController.m
Normal file
107
QXLive/Base/QXAppStartViewController.m
Normal file
@@ -0,0 +1,107 @@
|
||||
//
|
||||
// QXAppStartViewController.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/8/12.
|
||||
//
|
||||
|
||||
#import "QXAppStartViewController.h"
|
||||
#import "AppDelegate.h"
|
||||
@interface QXAppStartViewController ()
|
||||
@property (nonatomic,strong)UIImageView *bgImaegView;
|
||||
@end
|
||||
|
||||
@implementation QXAppStartViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
self.bgImaegView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
self.bgImaegView.image = [UIImage imageNamed:@"启动页"];;
|
||||
self.bgImaegView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
[self.view addSubview:self.bgImaegView];
|
||||
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
|
||||
[self getAppTheme];
|
||||
}
|
||||
-(void)viewDidDisappear:(BOOL)animated{
|
||||
[super viewDidDisappear:animated];
|
||||
// [[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
-(void)getAppTheme{
|
||||
NSString *themeUrl = [NSString stringWithFormat:@"%@%@",ServerUrl,QXAppTheme];
|
||||
[[QXRequset shareInstance] getWithUrl:themeUrl parameters:@{} needCache:NO success:^(id responseObject) {
|
||||
[QXConfig defaultConfig];
|
||||
QXThemeModel *model = [QXThemeModel yy_modelWithJSON:responseObject[@"data"]];
|
||||
if (model.theme_color && model.theme_color.length > 0) {
|
||||
QXConfig.shared.themeColor = [UIColor colorWithHexString:model.theme_color];
|
||||
}
|
||||
// QXConfig.shared.themeColor = [UIColor colorWithHexString:@"#ff0000"];
|
||||
if (model.btn_text_color && model.btn_text_color.length > 0) {
|
||||
QXConfig.shared.btnTextColor = [UIColor colorWithHexString:model.btn_text_color];
|
||||
}
|
||||
if (model.app_bg && model.app_bg.length > 0) {
|
||||
QXConfig.shared.backgroundImage = model.app_bg;
|
||||
}
|
||||
QXTabbarModel *tabbarIndex1 = QXConfig.shared.tabbarArray[0];
|
||||
QXTabbarModel *tabbarIndex2 = QXConfig.shared.tabbarArray[1];
|
||||
QXTabbarModel *tabbarIndex3 = QXConfig.shared.tabbarArray[2];
|
||||
QXTabbarModel *tabbarIndex4 = QXConfig.shared.tabbarArray[3];
|
||||
|
||||
if (model.home_nor && model.home_nor.length > 0) {
|
||||
tabbarIndex1.normalImage = model.home_nor;
|
||||
}
|
||||
if (model.home_sel && model.home_sel.length > 0) {
|
||||
tabbarIndex1.selectedImage = model.home_sel;
|
||||
}
|
||||
|
||||
if (model.find_nor && model.find_nor.length > 0) {
|
||||
tabbarIndex2.normalImage = model.find_nor;
|
||||
}
|
||||
if (model.find_sel && model.find_sel.length > 0) {
|
||||
tabbarIndex2.selectedImage = model.find_sel;
|
||||
}
|
||||
|
||||
if (model.msg_nor && model.msg_nor.length > 0) {
|
||||
tabbarIndex3.normalImage = model.msg_nor;
|
||||
}
|
||||
if (model.msg_sel && model.msg_sel.length > 0) {
|
||||
tabbarIndex3.selectedImage = model.msg_sel;
|
||||
}
|
||||
|
||||
if (model.mine_nor && model.mine_nor.length > 0) {
|
||||
tabbarIndex4.normalImage = model.mine_nor;
|
||||
}
|
||||
if (model.mine_sel && model.mine_sel.length > 0) {
|
||||
tabbarIndex4.selectedImage = model.mine_sel;
|
||||
}
|
||||
QXConfig.shared.tabbarArray = @[tabbarIndex1,tabbarIndex2,tabbarIndex3,tabbarIndex4];
|
||||
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
|
||||
[delegate changeRootViewControllerIsTabbar];
|
||||
NSLog(@"请求成功");
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
NSLog(@"请求失败");
|
||||
[self alertNetworkError];
|
||||
}];
|
||||
}
|
||||
-(void)loginSuccess{
|
||||
[self getAppTheme];
|
||||
}
|
||||
-(void)alertNetworkError{
|
||||
MJWeakSelf
|
||||
UIAlertController *al = [UIAlertController alertControllerWithTitle:@"网络错误" message:@"" preferredStyle:(UIAlertControllerStyleAlert)];
|
||||
[al addAction:[UIAlertAction actionWithTitle:@"重试" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
|
||||
[weakSelf getAppTheme];
|
||||
}]];
|
||||
[self presentViewController:al animated:YES completion:nil];
|
||||
}
|
||||
/*
|
||||
#pragma mark - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
// Get the new view controller using [segue destinationViewController].
|
||||
// Pass the selected object to the new view controller.
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
||||
@@ -54,7 +54,7 @@
|
||||
if (![imageUrl isExist]) {
|
||||
return;
|
||||
}
|
||||
if ([imageUrl hasPrefix:@"http"]) {
|
||||
if ([imageUrl hasPrefix:@"http"] || [imageUrl hasPrefix:@"https"]) {
|
||||
[self.bgImageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:nil];
|
||||
}else{
|
||||
self.bgImageView.image = [UIImage imageNamed:imageUrl];
|
||||
@@ -64,6 +64,7 @@
|
||||
if (!_bgImageView) {
|
||||
_bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||
_bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
_bgImageView.clipsToBounds = YES;
|
||||
}
|
||||
return _bgImageView;
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
return;
|
||||
}
|
||||
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
||||
navagationController.interactivePopGestureRecognizer.enabled = NO;
|
||||
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
||||
if (_miniView) {
|
||||
[_miniView removeFromSuperview];
|
||||
_miniView = nil;
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
- (void)initializeAgoraEngine {
|
||||
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:AgoraAuthId delegate:self];
|
||||
[self.agoraKit enableAudioVolumeIndication:200 smooth:3 reportVad:NO];
|
||||
|
||||
[self.agoraKit getCurrentMonotonicTimeInMs];
|
||||
[self.agoraKit setAudioProfile:AgoraAudioProfileMusicHighQualityStereo];
|
||||
[self.agoraKit setAudioScenario:AgoraAudioScenarioChorus];
|
||||
|
||||
|
||||
@@ -53,4 +53,43 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,strong)NSString *title;
|
||||
@end
|
||||
|
||||
|
||||
@interface QXThemeModel : NSObject
|
||||
/**
|
||||
app背景图片 app_bg
|
||||
首页选中 home_sel
|
||||
首页正常 home_nor
|
||||
广场选中 find_sel
|
||||
广场正常 find_nor
|
||||
消息选中 msg_sel
|
||||
消息正常 msg_nor
|
||||
我的选中 mine_sel
|
||||
我的正常 mine_nor
|
||||
主题色 theme_color
|
||||
按钮文字色 btn_text_color
|
||||
*/
|
||||
/// app背景图片
|
||||
@property (nonatomic,strong)NSString *app_bg;
|
||||
/// 首页选中
|
||||
@property (nonatomic,strong)NSString *home_sel;
|
||||
/// 首页正常
|
||||
@property (nonatomic,strong)NSString *home_nor;
|
||||
/// 广场选中
|
||||
@property (nonatomic,strong)NSString *find_sel;
|
||||
/// 广场正常
|
||||
@property (nonatomic,strong)NSString *find_nor;
|
||||
/// 消息选中
|
||||
@property (nonatomic,strong)NSString *msg_sel;
|
||||
/// 消息正常
|
||||
@property (nonatomic,strong)NSString *msg_nor;
|
||||
/// 我的选中
|
||||
@property (nonatomic,strong)NSString *mine_sel;
|
||||
/// 我的正常
|
||||
@property (nonatomic,strong)NSString *mine_nor;
|
||||
/// 主题色
|
||||
@property (nonatomic,strong)NSString *theme_color;
|
||||
/// 按钮颜色
|
||||
@property (nonatomic,strong)NSString *btn_text_color;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -105,3 +105,8 @@
|
||||
@end
|
||||
|
||||
|
||||
@implementation QXThemeModel
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -120,7 +120,7 @@ QXRoomUserInfoViewDelegate
|
||||
}
|
||||
}
|
||||
self.navigationController.viewControllers = marr;
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = NO;
|
||||
}
|
||||
-(void)viewDidDisappear:(BOOL)animated{
|
||||
[super viewDidDisappear:animated];
|
||||
@@ -749,7 +749,7 @@ QXRoomUserInfoViewDelegate
|
||||
-(void)userDidTakeOffWithUserInfo:(QXUserHomeModel *)userInfo{
|
||||
if ([userInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -380,12 +380,12 @@
|
||||
|
||||
}
|
||||
-(void)miniRoom{
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
-(void)leaveRoom{
|
||||
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomId];
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
|
||||
|
||||
@@ -397,13 +397,17 @@
|
||||
|
||||
-(UIImageView *)noUserImageView{
|
||||
if (!_noUserImageView) {
|
||||
_noUserImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_seat_icon"]];
|
||||
UIImage *image = [UIImage imageNamed:@"room_seat_icon"];
|
||||
// image = [image imageByTintColor:QXConfig.themeColor];
|
||||
_noUserImageView = [[UIImageView alloc] initWithImage:image];
|
||||
}
|
||||
return _noUserImageView;
|
||||
}
|
||||
-(UIImageView *)offlineImageView{
|
||||
if (!_offlineImageView) {
|
||||
_offlineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_user_offline"]];
|
||||
UIImage *image = [UIImage imageNamed:@"room_user_offline"];
|
||||
// image = [image imageByTintColor:QXConfig.themeColor];
|
||||
_offlineImageView = [[UIImageView alloc] initWithImage:image];
|
||||
_offlineImageView.contentMode = UIViewContentModeScaleToFill;
|
||||
_offlineImageView.hidden = YES;
|
||||
}
|
||||
|
||||
@@ -275,12 +275,12 @@
|
||||
|
||||
}
|
||||
-(void)miniRoom{
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
-(void)leaveRoom{
|
||||
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomModel.room_info.room_id];
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="Plus Circle" width="24" height="24"/>
|
||||
<image name="app_bg" width="375" height="465"/>
|
||||
<image name="app_bg" width="375" height="812"/>
|
||||
<image name="login_sex_boy_nor" width="160" height="77"/>
|
||||
<image name="login_sex_boy_sel" width="160" height="77"/>
|
||||
<image name="login_sex_girl_nor" width="160" height="77"/>
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
}];
|
||||
|
||||
self.bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, self.systemView.bottom, SCREEN_WIDTH, 8)];
|
||||
self.bottomView.backgroundColor = RGB16(0xececec);
|
||||
// self.bottomView.backgroundColor = RGB16(0xececec);
|
||||
self.bottomView.backgroundColor = [UIColor clearColor];
|
||||
[self addSubview:self.bottomView];
|
||||
}
|
||||
-(void)setModel:(QXMessageModel *)model{
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#import <AlipaySDK/AlipaySDK.h>
|
||||
#import <TIMPush/TIMPushManager.h>
|
||||
#import <SDWebImageWebPCoder/SDWebImageWebPCoder.h>
|
||||
#import "QXAppStartViewController.h"
|
||||
#if DEBUG
|
||||
#import <LLDebugTool.h>
|
||||
#endif
|
||||
@@ -29,15 +30,8 @@
|
||||
[QXConfig defaultConfig];
|
||||
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
self.window.backgroundColor = [UIColor whiteColor];
|
||||
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
|
||||
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
|
||||
self.window.rootViewController = vc;
|
||||
}else{
|
||||
self.tabbarVC = [[QXTabbarController alloc] init];
|
||||
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
|
||||
na.navigationBarHidden = YES;
|
||||
self.window.rootViewController = na;
|
||||
}
|
||||
QXAppStartViewController *startVC = [[QXAppStartViewController alloc] init];
|
||||
self.window.rootViewController = startVC;
|
||||
[Bugly startWithAppId:@"38d154fc5f"];
|
||||
SDImageWebPCoder *webPCoder = [SDImageWebPCoder sharedCoder];
|
||||
[[SDImageCodersManager sharedManager] addCoder:webPCoder];
|
||||
@@ -61,10 +55,15 @@
|
||||
[AvoidCrash becomeEffective];
|
||||
}
|
||||
-(void)changeRootViewControllerIsTabbar{
|
||||
self.tabbarVC = [[QXTabbarController alloc] init];
|
||||
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
|
||||
na.navigationBarHidden = YES;
|
||||
self.window.rootViewController = na;
|
||||
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
|
||||
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
|
||||
self.window.rootViewController = vc;
|
||||
}else{
|
||||
self.tabbarVC = [[QXTabbarController alloc] init];
|
||||
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
|
||||
na.navigationBarHidden = YES;
|
||||
self.window.rootViewController = na;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="启动页" translatesAutoresizingMaskIntoConstraints="NO" id="ydi-6i-HE8">
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="启动页" translatesAutoresizingMaskIntoConstraints="NO" id="ydi-6i-HE8">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
|
||||
@@ -27,6 +27,10 @@ static NSInteger const AddressOfMQTTPort = 1883;
|
||||
static NSInteger const AppPushId = 46164;
|
||||
|
||||
static NSString *const AgoraAuthId = @"05b406b4541e413887d8d2bf9be8642c";
|
||||
|
||||
//一键登录AuthSDKInfo
|
||||
static NSString *const AuthSDKKey = @"Q8xhyn+MAyHw8FQLjKOWU8ZrZMXsuflPGSxDvwKu8ULvm8eZBPNLfezCsyuKzISPIGbMK5oR6fX/TyIdFwBjfL2lUteddxG+fu8aBuyScR066oDRhj66x97xM+9n6lnog9MOdMvGryx6PkZa1/un0IoX46SfrjpitnzYZvfFlavVDOq50iO4piAU/idOWnyY+1bQAnBQsfr8ZKHTAbpR2aUn4C6R37MvtXHnmD+o3Qjx0SbCxpsvs9h91/VBQ2+XEIynDIPDM+0=";
|
||||
|
||||
#else
|
||||
|
||||
static NSString *const WechatAppId = @"wxc7681513be9f926b";
|
||||
@@ -47,7 +51,11 @@ static NSInteger const AddressOfMQTTPort = 1883;
|
||||
|
||||
static NSInteger const AppPushId = 46163;
|
||||
|
||||
///声网
|
||||
static NSString *const AgoraAuthId = @"4a521d6f1c6343998b1c8fd425dea02a";
|
||||
|
||||
//一键登录AuthSDKInfo
|
||||
static NSString *const AuthSDKKey = @"hKYFcoI6vIdz9/yOCs3XJ/fUQ0u3DHGa5UPONdSJfSccjVtn3sHBRecwepn5iNIgOYWq8xgUc4LtWqSjpveHIYzJx0YcQm/j5IXdVKe74RI+4vT00UwP8oQSZ2w0a18Sbbd8uKgFys8CUyQZWfMZXHIVuHmNBHRHZ1xoX2sCCCl56U3vQ11ZSpJdeZW4wvQ8qeQ56Q4wyW5hyo/yFU1sxohn1ApS6FbbXXwroWV57aK1R9+zaBOqn41NCKlvKsSD";
|
||||
#endif
|
||||
|
||||
/// 声网
|
||||
@@ -74,8 +82,7 @@ static NSString *const CHAT_IMG_FILE_BASE_PATH = @"emchat/image/ios/";
|
||||
static NSString *const CHAT_VIDEO_FILE_BASE_PATH = @"emchat/videos/ios";
|
||||
static NSString *const CHAT_AUDIO_FILE_BASE_PATH = @"emchat/audio/ios/";
|
||||
|
||||
//一键登录AuthSDKInfo
|
||||
static NSString *const AuthSDKKey = @"hKYFcoI6vIdz9/yOCs3XJ/fUQ0u3DHGa5UPONdSJfSccjVtn3sHBRecwepn5iNIgOYWq8xgUc4LtWqSjpveHIYzJx0YcQm/j5IXdVKe74RI+4vT00UwP8oQSZ2w0a18Sbbd8uKgFys8CUyQZWfMZXHIVuHmNBHRHZ1xoX2sCCCl56U3vQ11ZSpJdeZW4wvQ8qeQ56Q4wyW5hyo/yFU1sxohn1ApS6FbbXXwroWV57aK1R9+zaBOqn41NCKlvKsSD";
|
||||
|
||||
|
||||
|
||||
/// 本地存储
|
||||
|
||||
@@ -21,6 +21,8 @@ static NSString * QXGuidePage = @"api/banner/get_banner_qidonglist";
|
||||
static NSString * QXAppVersion = @"api/Version/get_app_version";
|
||||
/// 协议
|
||||
static NSString * QXAppProtocol = @"api/Page/page_show";
|
||||
/// 获取主题配置
|
||||
static NSString * QXAppTheme = @"api/Theme/get_theme_data";
|
||||
|
||||
#pragma mark - 登录
|
||||
/// 验证码登录获取账号列表
|
||||
|
||||
@@ -96,8 +96,16 @@
|
||||
/// @param title 标题文字
|
||||
- (void)setTabBarImageUrl:(NSString *)imageUrl selectedImg:(nonnull NSString *)imageName title:(nonnull NSString *)title {
|
||||
self.titleLbl.text = title;
|
||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageUrl] forState:UIControlStateNormal];
|
||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateSelected];
|
||||
if ([imageUrl hasPrefix:@"http"] || [imageUrl hasPrefix:@"https"]) {
|
||||
[self.iconBtn sd_setBackgroundImageWithURL:[NSURL URLWithString:imageUrl] forState:UIControlStateNormal placeholderImage:nil];
|
||||
}else{
|
||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageUrl] forState:UIControlStateNormal];
|
||||
}
|
||||
if ([imageName hasPrefix:@"http"] || [imageName hasPrefix:@"https"]) {
|
||||
[self.iconBtn sd_setBackgroundImageWithURL:[NSURL URLWithString:imageName] forState:UIControlStateSelected placeholderImage:nil];
|
||||
}else{
|
||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateSelected];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)heartAnimationWithView:(UIView*)view{
|
||||
|
||||
15
QXLiveScreen copy-Info.plist
Normal file
15
QXLiveScreen copy-Info.plist
Normal file
@@ -0,0 +1,15 @@
|
||||
<?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>SampleHandler</string>
|
||||
<key>RPBroadcastProcessMode</key>
|
||||
<string>RPBroadcastProcessModeSampleBuffer</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
Reference in New Issue
Block a user