Commit a34101721e6233aee7a72293255a63824af374a5

Authored by liushiyu
2 parents 68bcd10b c8ae00f6

Merge branch 'master' of bj.gitlab.cnlive.com:ios-team/CNLiveBusinessTools

# Conflicts:
#	CNLiveBusinessTools.podspec
CNLiveBusinessTools.podspec
@@ -8,7 +8,8 @@ @@ -8,7 +8,8 @@
8 8
9 Pod::Spec.new do |s| 9 Pod::Spec.new do |s|
10 s.name = 'CNLiveBusinessTools' 10 s.name = 'CNLiveBusinessTools'
11 - s.version = '0.1.25' 11 +
  12 + s.version = '0.1.27'
12 s.summary = '业务工具集合组件.' 13 s.summary = '业务工具集合组件.'
13 14
14 # This description is used to generate tags and improve search results. 15 # This description is used to generate tags and improve search results.
@@ -22,29 +23,32 @@ Pod::Spec.new do |s| @@ -22,29 +23,32 @@ Pod::Spec.new do |s|
22 DESC 23 DESC
23 24
24 s.homepage = 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBusinessTools.git' 25 s.homepage = 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBusinessTools.git'
25 - # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'  
26 s.license = { :type => 'MIT', :file => 'LICENSE' } 26 s.license = { :type => 'MIT', :file => 'LICENSE' }
27 s.author = { '郭瑞朋' => 'guoruipeng@cnlive.com' } 27 s.author = { '郭瑞朋' => 'guoruipeng@cnlive.com' }
28 s.source = { :git => 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBusinessTools.git', :tag => s.version.to_s } 28 s.source = { :git => 'http://bj.gitlab.cnlive.com/ios-team/CNLiveBusinessTools.git', :tag => s.version.to_s }
29 - # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'  
30 29
31 s.ios.deployment_target = '10.0' 30 s.ios.deployment_target = '10.0'
32 31
33 s.source_files = 'CNLiveBusinessTools/Classes/**/*' 32 s.source_files = 'CNLiveBusinessTools/Classes/**/*'
34 33
35 - # s.resource_bun/Users/open/CNLiveBaseKit/CNLiveBaseKit.podspecdles = {  
36 - # 'CNLiveBusinessTools' => ['CNLiveBusinessTools/Assets/*.png']  
37 - # }  
38 s.resource_bundles = { 34 s.resource_bundles = {
39 'CNLiveBusinessTools' => ['CNLiveBusinessTools/Assets/*.bundle'] 35 'CNLiveBusinessTools' => ['CNLiveBusinessTools/Assets/*.bundle']
40 } 36 }
41 37
42 - # s.public_header_files = 'Pod/Classes/**/*.h'  
43 s.frameworks = 'UIKit', 'MapKit','Photos' 38 s.frameworks = 'UIKit', 'MapKit','Photos'
44 s.dependency 'CNLiveEnvironment' 39 s.dependency 'CNLiveEnvironment'
45 s.dependency 'CNLiveUserManagement' 40 s.dependency 'CNLiveUserManagement'
46 s.dependency 'CNLiveBaseKit' 41 s.dependency 'CNLiveBaseKit'
47 s.dependency 'CNLiveRequestBastKit' 42 s.dependency 'CNLiveRequestBastKit'
48 - s.dependency 'CNLiveTripartiteManagement/QMUIKit'  
49 - s.dependency 'CNLiveTripartiteManagement/YYKit' 43 + s.dependency 'CNLiveNewTripartiteManagement/QMUIKit'
  44 + s.dependency 'CNLiveNewTripartiteManagement/YYImage'
  45 + s.dependency 'CNLiveNewTripartiteManagement/YYModel'
  46 + s.dependency 'CNLiveNewTripartiteManagement/YYCache'
  47 + s.dependency 'CNLiveNewTripartiteManagement/YYWebImage'
  48 + s.dependency 'CNLiveNewTripartiteManagement/YYText'
  49 + s.dependency 'CNLiveNewTripartiteManagement/YYDispatchQueuePool'
  50 + s.dependency 'CNLiveNewTripartiteManagement/YYAsyncLayer'
  51 + s.dependency 'CNLiveNewTripartiteManagement/YYCategories'
50 end 52 end
  53 +
  54 +
CNLiveBusinessTools/Classes/CNLiveBusinessTools.m
@@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
7 7
8 #import "CNLiveBusinessTools.h" 8 #import "CNLiveBusinessTools.h"
9 #import <Photos/Photos.h> 9 #import <Photos/Photos.h>
10 -#import <YYKit/YYKit.h> 10 +#import <YYImage/YYImage.h>
  11 +#import <YYText/YYText.h>
11 @implementation CNLiveBusinessTools 12 @implementation CNLiveBusinessTools
12 13
13 /// 拼接音视频通话时长统计内容 14 /// 拼接音视频通话时长统计内容
@@ -1009,14 +1010,14 @@ @@ -1009,14 +1010,14 @@
1009 YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:emojiArr[j].image]; 1010 YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:emojiArr[j].image];
1010 imageView.width = 24*RATIO; 1011 imageView.width = 24*RATIO;
1011 imageView.height = 24*RATIO; 1012 imageView.height = 24*RATIO;
1012 - NSMutableAttributedString *attachText = [NSMutableAttributedString attachmentStringWithContent:imageView contentMode:UIViewContentModeCenter attachmentSize:imageView.size alignToFont:UIFontCNMake(contentLabelFontSize) alignment:YYTextVerticalAlignmentCenter]; 1013 + NSMutableAttributedString *attachText = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeCenter attachmentSize:imageView.size alignToFont:UIFontCNMake(contentLabelFontSize) alignment:YYTextVerticalAlignmentCenter];
1013 [attStr replaceCharactersInRange:result.range withAttributedString:attachText]; 1014 [attStr replaceCharactersInRange:result.range withAttributedString:attachText];
1014 }); 1015 });
1015 }else{ 1016 }else{
1016 YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:emojiArr[j].image]; 1017 YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:emojiArr[j].image];
1017 imageView.width = 24*RATIO; 1018 imageView.width = 24*RATIO;
1018 imageView.height = 24*RATIO; 1019 imageView.height = 24*RATIO;
1019 - NSMutableAttributedString *attachText = [NSMutableAttributedString attachmentStringWithContent:imageView contentMode:UIViewContentModeCenter attachmentSize:imageView.size alignToFont:UIFontCNMake(contentLabelFontSize) alignment:YYTextVerticalAlignmentCenter]; 1020 + NSMutableAttributedString *attachText = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeCenter attachmentSize:imageView.size alignToFont:UIFontCNMake(contentLabelFontSize) alignment:YYTextVerticalAlignmentCenter];
1020 1021
1021 [attStr replaceCharactersInRange:result.range withAttributedString:attachText]; 1022 [attStr replaceCharactersInRange:result.range withAttributedString:attachText];
1022 } 1023 }
Example/CNLiveBusinessTools.xcodeproj/project.pbxproj 100755 → 100644
@@ -207,7 +207,7 @@ @@ -207,7 +207,7 @@
207 6003F586195388D20070C39A /* Sources */, 207 6003F586195388D20070C39A /* Sources */,
208 6003F587195388D20070C39A /* Frameworks */, 208 6003F587195388D20070C39A /* Frameworks */,
209 6003F588195388D20070C39A /* Resources */, 209 6003F588195388D20070C39A /* Resources */,
210 - FB47CD5550AF5CBC50CAF8AB /* [CP] Embed Pods Frameworks */, 210 + 5116E172A05050C84C2BB94B /* [CP] Embed Pods Frameworks */,
211 ); 211 );
212 buildRules = ( 212 buildRules = (
213 ); 213 );
@@ -297,29 +297,57 @@ @@ -297,29 +297,57 @@
297 /* End PBXResourcesBuildPhase section */ 297 /* End PBXResourcesBuildPhase section */
298 298
299 /* Begin PBXShellScriptBuildPhase section */ 299 /* Begin PBXShellScriptBuildPhase section */
300 - 8EC89BB3E783A11E7E4DEB0B /* [CP] Check Pods Manifest.lock */ = { 300 + 5116E172A05050C84C2BB94B /* [CP] Embed Pods Frameworks */ = {
301 isa = PBXShellScriptBuildPhase; 301 isa = PBXShellScriptBuildPhase;
302 buildActionMask = 2147483647; 302 buildActionMask = 2147483647;
303 files = ( 303 files = (
304 ); 304 );
305 - inputFileListPaths = (  
306 - );  
307 inputPaths = ( 305 inputPaths = (
308 - "${PODS_PODFILE_DIR_PATH}/Podfile.lock",  
309 - "${PODS_ROOT}/Manifest.lock",  
310 - );  
311 - name = "[CP] Check Pods Manifest.lock";  
312 - outputFileListPaths = ( 306 + "${PODS_ROOT}/Target Support Files/Pods-CNLiveBusinessTools_Example/Pods-CNLiveBusinessTools_Example-frameworks.sh",
  307 + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
  308 + "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",
  309 + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework",
  310 + "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework",
  311 + "${BUILT_PRODUCTS_DIR}/CNLiveNewTripartiteManagement/CNLiveNewTripartiteManagement.framework",
  312 + "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
  313 + "${BUILT_PRODUCTS_DIR}/CNLiveUserManagement/CNLiveUserManagement.framework",
  314 + "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
  315 + "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework",
  316 + "${BUILT_PRODUCTS_DIR}/YYAsyncLayer/YYAsyncLayer.framework",
  317 + "${BUILT_PRODUCTS_DIR}/YYCache/YYCache.framework",
  318 + "${BUILT_PRODUCTS_DIR}/YYCategories/YYCategories.framework",
  319 + "${BUILT_PRODUCTS_DIR}/YYDispatchQueuePool/YYDispatchQueuePool.framework",
  320 + "${BUILT_PRODUCTS_DIR}/YYImage/YYImage.framework",
  321 + "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework",
  322 + "${BUILT_PRODUCTS_DIR}/YYText/YYText.framework",
  323 + "${BUILT_PRODUCTS_DIR}/YYWebImage/YYWebImage.framework",
313 ); 324 );
  325 + name = "[CP] Embed Pods Frameworks";
314 outputPaths = ( 326 outputPaths = (
315 - "$(DERIVED_FILE_DIR)/Pods-CNLiveBusinessTools_Tests-checkManifestLockResult.txt", 327 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
  328 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",
  329 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework",
  330 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework",
  331 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveNewTripartiteManagement.framework",
  332 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
  333 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveUserManagement.framework",
  334 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
  335 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework",
  336 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYAsyncLayer.framework",
  337 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCache.framework",
  338 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYCategories.framework",
  339 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYDispatchQueuePool.framework",
  340 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYImage.framework",
  341 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework",
  342 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYText.framework",
  343 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYWebImage.framework",
316 ); 344 );
317 runOnlyForDeploymentPostprocessing = 0; 345 runOnlyForDeploymentPostprocessing = 0;
318 shellPath = /bin/sh; 346 shellPath = /bin/sh;
319 - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 347 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBusinessTools_Example/Pods-CNLiveBusinessTools_Example-frameworks.sh\"\n";
320 showEnvVarsInLog = 0; 348 showEnvVarsInLog = 0;
321 }; 349 };
322 - E8231C3E5CBA7CDBED05E71D /* [CP] Check Pods Manifest.lock */ = { 350 + 8EC89BB3E783A11E7E4DEB0B /* [CP] Check Pods Manifest.lock */ = {
323 isa = PBXShellScriptBuildPhase; 351 isa = PBXShellScriptBuildPhase;
324 buildActionMask = 2147483647; 352 buildActionMask = 2147483647;
325 files = ( 353 files = (
@@ -334,47 +362,33 @@ @@ -334,47 +362,33 @@
334 outputFileListPaths = ( 362 outputFileListPaths = (
335 ); 363 );
336 outputPaths = ( 364 outputPaths = (
337 - "$(DERIVED_FILE_DIR)/Pods-CNLiveBusinessTools_Example-checkManifestLockResult.txt", 365 + "$(DERIVED_FILE_DIR)/Pods-CNLiveBusinessTools_Tests-checkManifestLockResult.txt",
338 ); 366 );
339 runOnlyForDeploymentPostprocessing = 0; 367 runOnlyForDeploymentPostprocessing = 0;
340 shellPath = /bin/sh; 368 shellPath = /bin/sh;
341 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 369 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
342 showEnvVarsInLog = 0; 370 showEnvVarsInLog = 0;
343 }; 371 };
344 - FB47CD5550AF5CBC50CAF8AB /* [CP] Embed Pods Frameworks */ = { 372 + E8231C3E5CBA7CDBED05E71D /* [CP] Check Pods Manifest.lock */ = {
345 isa = PBXShellScriptBuildPhase; 373 isa = PBXShellScriptBuildPhase;
346 buildActionMask = 2147483647; 374 buildActionMask = 2147483647;
347 files = ( 375 files = (
348 ); 376 );
  377 + inputFileListPaths = (
  378 + );
349 inputPaths = ( 379 inputPaths = (
350 - "${PODS_ROOT}/Target Support Files/Pods-CNLiveBusinessTools_Example/Pods-CNLiveBusinessTools_Example-frameworks.sh",  
351 - "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",  
352 - "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",  
353 - "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework",  
354 - "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework",  
355 - "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",  
356 - "${BUILT_PRODUCTS_DIR}/CNLiveTripartiteManagement/CNLiveTripartiteManagement.framework",  
357 - "${BUILT_PRODUCTS_DIR}/CNLiveUserManagement/CNLiveUserManagement.framework",  
358 - "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",  
359 - "${BUILT_PRODUCTS_DIR}/QMUIKit/QMUIKit.framework",  
360 - "${BUILT_PRODUCTS_DIR}/YYKit/YYKit.framework", 380 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  381 + "${PODS_ROOT}/Manifest.lock",
  382 + );
  383 + name = "[CP] Check Pods Manifest.lock";
  384 + outputFileListPaths = (
361 ); 385 );
362 - name = "[CP] Embed Pods Frameworks";  
363 outputPaths = ( 386 outputPaths = (
364 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",  
365 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",  
366 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework",  
367 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework",  
368 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",  
369 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveTripartiteManagement.framework",  
370 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveUserManagement.framework",  
371 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",  
372 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/QMUIKit.framework",  
373 - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYKit.framework", 387 + "$(DERIVED_FILE_DIR)/Pods-CNLiveBusinessTools_Example-checkManifestLockResult.txt",
374 ); 388 );
375 runOnlyForDeploymentPostprocessing = 0; 389 runOnlyForDeploymentPostprocessing = 0;
376 shellPath = /bin/sh; 390 shellPath = /bin/sh;
377 - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBusinessTools_Example/Pods-CNLiveBusinessTools_Example-frameworks.sh\"\n"; 391 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
378 showEnvVarsInLog = 0; 392 showEnvVarsInLog = 0;
379 }; 393 };
380 /* End PBXShellScriptBuildPhase section */ 394 /* End PBXShellScriptBuildPhase section */
README.md
1 # CNLiveBusinessTools 1 # CNLiveBusinessTools
2 2
3 -pod lib lint --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git --allow-warnings 3 +本地验证
  4 +pod lib lint --allow-warnings --no-clean --use-libraries --skip-import-validation --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git,http://bj.gitlab.cnlive.com/DSIOSTeam/DSSpecRepos.git --verbose
4 5
5 -pod spec lint --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git --allow-warnings 6 +本地+远程验证
  7 +pod spec lint --allow-warnings --no-clean --use-libraries --skip-import-validation --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git,http://bj.gitlab.cnlive.com/DSIOSTeam/DSSpecRepos.git --verbose
6 8
7 -pod repo push CNLiveRepos CNLiveBusinessTools.podspec --allow-warnings --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git 9 +推送
  10 +pod repo push CNLiveRepos CNLiveBusinessTools.podspec --allow-warnings --use-libraries --skip-import-validation --sources=http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git,https://github.com/CocoaPods/Specs.git,http://bj.gitlab.cnlive.com/DSIOSTeam/DSSpecRepos.git --verbose
8 11
9 [![CI Status](https://img.shields.io/travis/郭瑞朋/CNLiveBusinessTools.svg?style=flat)](https://travis-ci.org/郭瑞朋/CNLiveBusinessTools) 12 [![CI Status](https://img.shields.io/travis/郭瑞朋/CNLiveBusinessTools.svg?style=flat)](https://travis-ci.org/郭瑞朋/CNLiveBusinessTools)
10 [![Version](https://img.shields.io/cocoapods/v/CNLiveBusinessTools.svg?style=flat)](https://cocoapods.org/pods/CNLiveBusinessTools) 13 [![Version](https://img.shields.io/cocoapods/v/CNLiveBusinessTools.svg?style=flat)](https://cocoapods.org/pods/CNLiveBusinessTools)