增加换肤功能
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, ); }; };
|
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 */; };
|
95C29EAB2E19173300F2524D /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
|
||||||
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
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 */; };
|
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
|
||||||
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
|
||||||
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
|
||||||
@@ -58,12 +60,12 @@
|
|||||||
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
||||||
remoteInfo = QXLiveScreen;
|
remoteInfo = QXLiveScreen;
|
||||||
};
|
};
|
||||||
95C304242E4A05D7004B2D82 /* PBXContainerItemProxy */ = {
|
95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
|
remoteGlobalIDString = 95C327412E4C4068004B2D82;
|
||||||
remoteInfo = QXLiveScreen;
|
remoteInfo = QXLiveScreenDev;
|
||||||
};
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
@@ -85,7 +87,7 @@
|
|||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 13;
|
dstSubfolderSpec = 13;
|
||||||
files = (
|
files = (
|
||||||
95C304262E4A05E3004B2D82 /* QXLiveScreen.appex in Embed Foundation Extensions */,
|
95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
|
||||||
);
|
);
|
||||||
name = "Embed Foundation Extensions";
|
name = "Embed Foundation Extensions";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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; };
|
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 */;
|
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 */ = {
|
95C3F0032E49F44A004B2D82 /* Exceptions for "QXLive" folder in "QXLiveDev" target */ = {
|
||||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
||||||
membershipExceptions = (
|
membershipExceptions = (
|
||||||
@@ -179,6 +190,7 @@
|
|||||||
exceptions = (
|
exceptions = (
|
||||||
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
|
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
|
||||||
95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */,
|
95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */,
|
||||||
|
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */,
|
||||||
);
|
);
|
||||||
path = QXLiveScreen;
|
path = QXLiveScreen;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -227,6 +239,15 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
95C327432E4C4068004B2D82 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */,
|
||||||
|
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
95C3EFEE2E49F44A004B2D82 /* Frameworks */ = {
|
95C3EFEE2E49F44A004B2D82 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -293,6 +314,7 @@
|
|||||||
9593D7182DB9C95C0082CA57 /* Products */,
|
9593D7182DB9C95C0082CA57 /* Products */,
|
||||||
2B243E5E8CFE9B1EF0A08846 /* Pods */,
|
2B243E5E8CFE9B1EF0A08846 /* Pods */,
|
||||||
4B6F40DB8328A2B2BB1BF79D /* Frameworks */,
|
4B6F40DB8328A2B2BB1BF79D /* Frameworks */,
|
||||||
|
95C3274C2E4C4068004B2D82 /* QXLiveScreen copy-Info.plist */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -304,6 +326,7 @@
|
|||||||
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */,
|
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */,
|
||||||
95C29E9D2E19166700F2524D /* QXLiveScreen.appex */,
|
95C29E9D2E19166700F2524D /* QXLiveScreen.appex */,
|
||||||
95C3F0022E49F44A004B2D82 /* QXLiveDev.app */,
|
95C3F0022E49F44A004B2D82 /* QXLiveDev.app */,
|
||||||
|
95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -398,6 +421,26 @@
|
|||||||
productReference = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */;
|
productReference = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */;
|
||||||
productType = "com.apple.product-type.app-extension";
|
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 */ = {
|
95C3EFE92E49F44A004B2D82 /* QXLiveDev */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 95C3EFFF2E49F44A004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveDev" */;
|
buildConfigurationList = 95C3EFFF2E49F44A004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveDev" */;
|
||||||
@@ -413,7 +456,7 @@
|
|||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
95C304252E4A05D7004B2D82 /* PBXTargetDependency */,
|
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
fileSystemSynchronizedGroups = (
|
fileSystemSynchronizedGroups = (
|
||||||
9593D7192DB9C95C0082CA57 /* QXLive */,
|
9593D7192DB9C95C0082CA57 /* QXLive */,
|
||||||
@@ -470,6 +513,7 @@
|
|||||||
9593D73B2DB9C95E0082CA57 /* QXLiveUITests */,
|
9593D73B2DB9C95E0082CA57 /* QXLiveUITests */,
|
||||||
95C29E9C2E19166700F2524D /* QXLiveScreen */,
|
95C29E9C2E19166700F2524D /* QXLiveScreen */,
|
||||||
95C3EFE92E49F44A004B2D82 /* QXLiveDev */,
|
95C3EFE92E49F44A004B2D82 /* QXLiveDev */,
|
||||||
|
95C327412E4C4068004B2D82 /* QXLiveScreenDev */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
@@ -503,6 +547,13 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
95C327462E4C4068004B2D82 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
95C3EFFA2E49F44A004B2D82 /* Resources */ = {
|
95C3EFFA2E49F44A004B2D82 /* Resources */ = {
|
||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -656,6 +707,13 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
95C327422E4C4068004B2D82 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
95C3EFED2E49F44A004B2D82 /* Sources */ = {
|
95C3EFED2E49F44A004B2D82 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@@ -681,10 +739,10 @@
|
|||||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
||||||
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
|
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
95C304252E4A05D7004B2D82 /* PBXTargetDependency */ = {
|
95C3274F2E4C4099004B2D82 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
|
target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
|
||||||
targetProxy = 95C304242E4A05D7004B2D82 /* PBXContainerItemProxy */;
|
targetProxy = 95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
@@ -698,7 +756,7 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -733,7 +791,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.3;
|
MARKETING_VERSION = 1.1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
@@ -758,7 +816,7 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = 8798G5VMH9;
|
DEVELOPMENT_TEAM = 8798G5VMH9;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -793,7 +851,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.3;
|
MARKETING_VERSION = 1.1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
@@ -1046,6 +1104,58 @@
|
|||||||
};
|
};
|
||||||
name = Release;
|
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 */ = {
|
95C3F0002E49F44A004B2D82 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */;
|
baseConfigurationReference = F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */;
|
||||||
@@ -1091,7 +1201,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.2;
|
MARKETING_VERSION = 1.0.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
@@ -1151,7 +1261,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.2;
|
MARKETING_VERSION = 1.0.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
@@ -1213,6 +1323,15 @@
|
|||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
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" */ = {
|
95C3EFFF2E49F44A004B2D82 /* Build configuration list for PBXNativeTarget "QXLiveDev" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
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>
|
<key>QXLiveDev.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>64</integer>
|
<integer>63</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>QXLiveScreen.xcscheme_^#shared#^_</key>
|
<key>QXLiveScreen.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>QXLiveScreenDev.xcscheme_^#shared#^_</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>64</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
<key>SuppressBuildableAutocreation</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
|||||||
Binary file not shown.
@@ -208,38 +208,6 @@
|
|||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</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
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<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]) {
|
if (![imageUrl isExist]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ([imageUrl hasPrefix:@"http"]) {
|
if ([imageUrl hasPrefix:@"http"] || [imageUrl hasPrefix:@"https"]) {
|
||||||
[self.bgImageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:nil];
|
[self.bgImageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:nil];
|
||||||
}else{
|
}else{
|
||||||
self.bgImageView.image = [UIImage imageNamed:imageUrl];
|
self.bgImageView.image = [UIImage imageNamed:imageUrl];
|
||||||
@@ -64,6 +64,7 @@
|
|||||||
if (!_bgImageView) {
|
if (!_bgImageView) {
|
||||||
_bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
_bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
|
||||||
_bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
_bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
_bgImageView.clipsToBounds = YES;
|
||||||
}
|
}
|
||||||
return _bgImageView;
|
return _bgImageView;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
navagationController = (QXBaseNavigationController*)KEYWINDOW.rootViewController;
|
||||||
navagationController.interactivePopGestureRecognizer.enabled = NO;
|
// navagationController.interactivePopGestureRecognizer.enabled = NO;
|
||||||
if (_miniView) {
|
if (_miniView) {
|
||||||
[_miniView removeFromSuperview];
|
[_miniView removeFromSuperview];
|
||||||
_miniView = nil;
|
_miniView = nil;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
- (void)initializeAgoraEngine {
|
- (void)initializeAgoraEngine {
|
||||||
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:AgoraAuthId delegate:self];
|
self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:AgoraAuthId delegate:self];
|
||||||
[self.agoraKit enableAudioVolumeIndication:200 smooth:3 reportVad:NO];
|
[self.agoraKit enableAudioVolumeIndication:200 smooth:3 reportVad:NO];
|
||||||
|
[self.agoraKit getCurrentMonotonicTimeInMs];
|
||||||
[self.agoraKit setAudioProfile:AgoraAudioProfileMusicHighQualityStereo];
|
[self.agoraKit setAudioProfile:AgoraAudioProfileMusicHighQualityStereo];
|
||||||
[self.agoraKit setAudioScenario:AgoraAudioScenarioChorus];
|
[self.agoraKit setAudioScenario:AgoraAudioScenarioChorus];
|
||||||
|
|
||||||
|
|||||||
@@ -53,4 +53,43 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@property (nonatomic,strong)NSString *title;
|
@property (nonatomic,strong)NSString *title;
|
||||||
@end
|
@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
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -105,3 +105,8 @@
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation QXThemeModel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.navigationController.viewControllers = marr;
|
self.navigationController.viewControllers = marr;
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = NO;
|
||||||
}
|
}
|
||||||
-(void)viewDidDisappear:(BOOL)animated{
|
-(void)viewDidDisappear:(BOOL)animated{
|
||||||
[super viewDidDisappear:animated];
|
[super viewDidDisappear:animated];
|
||||||
@@ -749,7 +749,7 @@ QXRoomUserInfoViewDelegate
|
|||||||
-(void)userDidTakeOffWithUserInfo:(QXUserHomeModel *)userInfo{
|
-(void)userDidTakeOffWithUserInfo:(QXUserHomeModel *)userInfo{
|
||||||
if ([userInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
if ([userInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||||
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
[self.navigationController popViewControllerAnimated:YES];
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -380,12 +380,12 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
-(void)miniRoom{
|
-(void)miniRoom{
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
[self.navigationController popViewControllerAnimated:YES];
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
-(void)leaveRoom{
|
-(void)leaveRoom{
|
||||||
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomId];
|
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomId];
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
[self.navigationController popViewControllerAnimated:YES];
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -397,13 +397,17 @@
|
|||||||
|
|
||||||
-(UIImageView *)noUserImageView{
|
-(UIImageView *)noUserImageView{
|
||||||
if (!_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;
|
return _noUserImageView;
|
||||||
}
|
}
|
||||||
-(UIImageView *)offlineImageView{
|
-(UIImageView *)offlineImageView{
|
||||||
if (!_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.contentMode = UIViewContentModeScaleToFill;
|
||||||
_offlineImageView.hidden = YES;
|
_offlineImageView.hidden = YES;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -275,12 +275,12 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
-(void)miniRoom{
|
-(void)miniRoom{
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
[self.navigationController popViewControllerAnimated:YES];
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
-(void)leaveRoom{
|
-(void)leaveRoom{
|
||||||
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomModel.room_info.room_id];
|
[[QXGlobal shareGlobal]quitRoomWithRoomId:self.roomModel.room_info.room_id];
|
||||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||||
[self.navigationController popViewControllerAnimated:YES];
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -410,7 +410,7 @@
|
|||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="Plus Circle" width="24" height="24"/>
|
<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_nor" width="160" height="77"/>
|
||||||
<image name="login_sex_boy_sel" width="160" height="77"/>
|
<image name="login_sex_boy_sel" width="160" height="77"/>
|
||||||
<image name="login_sex_girl_nor" 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 = [[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];
|
[self addSubview:self.bottomView];
|
||||||
}
|
}
|
||||||
-(void)setModel:(QXMessageModel *)model{
|
-(void)setModel:(QXMessageModel *)model{
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#import <AlipaySDK/AlipaySDK.h>
|
#import <AlipaySDK/AlipaySDK.h>
|
||||||
#import <TIMPush/TIMPushManager.h>
|
#import <TIMPush/TIMPushManager.h>
|
||||||
#import <SDWebImageWebPCoder/SDWebImageWebPCoder.h>
|
#import <SDWebImageWebPCoder/SDWebImageWebPCoder.h>
|
||||||
|
#import "QXAppStartViewController.h"
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
#import <LLDebugTool.h>
|
#import <LLDebugTool.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -29,15 +30,8 @@
|
|||||||
[QXConfig defaultConfig];
|
[QXConfig defaultConfig];
|
||||||
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||||
self.window.backgroundColor = [UIColor whiteColor];
|
self.window.backgroundColor = [UIColor whiteColor];
|
||||||
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
|
QXAppStartViewController *startVC = [[QXAppStartViewController alloc] init];
|
||||||
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
|
self.window.rootViewController = startVC;
|
||||||
self.window.rootViewController = vc;
|
|
||||||
}else{
|
|
||||||
self.tabbarVC = [[QXTabbarController alloc] init];
|
|
||||||
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
|
|
||||||
na.navigationBarHidden = YES;
|
|
||||||
self.window.rootViewController = na;
|
|
||||||
}
|
|
||||||
[Bugly startWithAppId:@"38d154fc5f"];
|
[Bugly startWithAppId:@"38d154fc5f"];
|
||||||
SDImageWebPCoder *webPCoder = [SDImageWebPCoder sharedCoder];
|
SDImageWebPCoder *webPCoder = [SDImageWebPCoder sharedCoder];
|
||||||
[[SDImageCodersManager sharedManager] addCoder:webPCoder];
|
[[SDImageCodersManager sharedManager] addCoder:webPCoder];
|
||||||
@@ -61,10 +55,15 @@
|
|||||||
[AvoidCrash becomeEffective];
|
[AvoidCrash becomeEffective];
|
||||||
}
|
}
|
||||||
-(void)changeRootViewControllerIsTabbar{
|
-(void)changeRootViewControllerIsTabbar{
|
||||||
self.tabbarVC = [[QXTabbarController alloc] init];
|
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
|
||||||
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
|
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
|
||||||
na.navigationBarHidden = YES;
|
self.window.rootViewController = vc;
|
||||||
self.window.rootViewController = na;
|
}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"/>
|
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<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"/>
|
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ static NSInteger const AddressOfMQTTPort = 1883;
|
|||||||
static NSInteger const AppPushId = 46164;
|
static NSInteger const AppPushId = 46164;
|
||||||
|
|
||||||
static NSString *const AgoraAuthId = @"05b406b4541e413887d8d2bf9be8642c";
|
static NSString *const AgoraAuthId = @"05b406b4541e413887d8d2bf9be8642c";
|
||||||
|
|
||||||
|
//一键登录AuthSDKInfo
|
||||||
|
static NSString *const AuthSDKKey = @"Q8xhyn+MAyHw8FQLjKOWU8ZrZMXsuflPGSxDvwKu8ULvm8eZBPNLfezCsyuKzISPIGbMK5oR6fX/TyIdFwBjfL2lUteddxG+fu8aBuyScR066oDRhj66x97xM+9n6lnog9MOdMvGryx6PkZa1/un0IoX46SfrjpitnzYZvfFlavVDOq50iO4piAU/idOWnyY+1bQAnBQsfr8ZKHTAbpR2aUn4C6R37MvtXHnmD+o3Qjx0SbCxpsvs9h91/VBQ2+XEIynDIPDM+0=";
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static NSString *const WechatAppId = @"wxc7681513be9f926b";
|
static NSString *const WechatAppId = @"wxc7681513be9f926b";
|
||||||
@@ -47,7 +51,11 @@ static NSInteger const AddressOfMQTTPort = 1883;
|
|||||||
|
|
||||||
static NSInteger const AppPushId = 46163;
|
static NSInteger const AppPushId = 46163;
|
||||||
|
|
||||||
|
///声网
|
||||||
static NSString *const AgoraAuthId = @"4a521d6f1c6343998b1c8fd425dea02a";
|
static NSString *const AgoraAuthId = @"4a521d6f1c6343998b1c8fd425dea02a";
|
||||||
|
|
||||||
|
//一键登录AuthSDKInfo
|
||||||
|
static NSString *const AuthSDKKey = @"hKYFcoI6vIdz9/yOCs3XJ/fUQ0u3DHGa5UPONdSJfSccjVtn3sHBRecwepn5iNIgOYWq8xgUc4LtWqSjpveHIYzJx0YcQm/j5IXdVKe74RI+4vT00UwP8oQSZ2w0a18Sbbd8uKgFys8CUyQZWfMZXHIVuHmNBHRHZ1xoX2sCCCl56U3vQ11ZSpJdeZW4wvQ8qeQ56Q4wyW5hyo/yFU1sxohn1ApS6FbbXXwroWV57aK1R9+zaBOqn41NCKlvKsSD";
|
||||||
#endif
|
#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_VIDEO_FILE_BASE_PATH = @"emchat/videos/ios";
|
||||||
static NSString *const CHAT_AUDIO_FILE_BASE_PATH = @"emchat/audio/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 * QXAppVersion = @"api/Version/get_app_version";
|
||||||
/// 协议
|
/// 协议
|
||||||
static NSString * QXAppProtocol = @"api/Page/page_show";
|
static NSString * QXAppProtocol = @"api/Page/page_show";
|
||||||
|
/// 获取主题配置
|
||||||
|
static NSString * QXAppTheme = @"api/Theme/get_theme_data";
|
||||||
|
|
||||||
#pragma mark - 登录
|
#pragma mark - 登录
|
||||||
/// 验证码登录获取账号列表
|
/// 验证码登录获取账号列表
|
||||||
|
|||||||
@@ -96,8 +96,16 @@
|
|||||||
/// @param title 标题文字
|
/// @param title 标题文字
|
||||||
- (void)setTabBarImageUrl:(NSString *)imageUrl selectedImg:(nonnull NSString *)imageName title:(nonnull NSString *)title {
|
- (void)setTabBarImageUrl:(NSString *)imageUrl selectedImg:(nonnull NSString *)imageName title:(nonnull NSString *)title {
|
||||||
self.titleLbl.text = title;
|
self.titleLbl.text = title;
|
||||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageUrl] forState:UIControlStateNormal];
|
if ([imageUrl hasPrefix:@"http"] || [imageUrl hasPrefix:@"https"]) {
|
||||||
[self.iconBtn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateSelected];
|
[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{
|
- (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