Commit ba0f2e96 authored by 井庆林's avatar 井庆林

灰度策略

parents 642258fa a68c9258
...@@ -50,9 +50,11 @@ ...@@ -50,9 +50,11 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
259B47496C313B9EC720BD76 /* GMPhobos.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GMPhobos.podspec; path = ../GMPhobos.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 259B47496C313B9EC720BD76 /* GMPhobos.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GMPhobos.podspec; path = ../GMPhobos.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
307F0A9AE09C3400AA3E80C3 /* Pods_GMPhobos_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMPhobos_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 307F0A9AE09C3400AA3E80C3 /* Pods_GMPhobos_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GMPhobos_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
39F84A4B7451E3C570109001 /* Pods-GMPhobos_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.release.xcconfig"; path = "Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.release.xcconfig"; sourceTree = "<group>"; };
3E2C3B0828BB1AA652517366 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; }; 3E2C3B0828BB1AA652517366 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
5973B392CD963C413ADE924A /* Pods-GMPhobos_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.release.xcconfig"; sourceTree = "<group>"; }; 5973B392CD963C413ADE924A /* Pods-GMPhobos_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.release.xcconfig"; sourceTree = "<group>"; };
5A925189F951EA5E99801E5F /* Pods-GMPhobos_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.release.xcconfig"; sourceTree = "<group>"; }; 5A925189F951EA5E99801E5F /* Pods-GMPhobos_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.release.xcconfig"; sourceTree = "<group>"; };
5BECCE13A9644D7FC0ABE491 /* Pods-GMPhobos_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.release.xcconfig"; path = "Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.release.xcconfig"; sourceTree = "<group>"; };
5C8C0EC8AB1257BC31A5BCFC /* Pods-GMPhobos_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.debug.xcconfig"; sourceTree = "<group>"; }; 5C8C0EC8AB1257BC31A5BCFC /* Pods-GMPhobos_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.debug.xcconfig"; sourceTree = "<group>"; };
6003F58A195388D20070C39A /* GMPhobos_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GMPhobos_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6003F58A195388D20070C39A /* GMPhobos_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GMPhobos_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
...@@ -76,6 +78,7 @@ ...@@ -76,6 +78,7 @@
63EFAB0E22658352005EEAC6 /* GMPhobos_ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GMPhobos_ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 63EFAB0E22658352005EEAC6 /* GMPhobos_ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GMPhobos_ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
63EFAB1022658352005EEAC6 /* GMPhobos_ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GMPhobos_ExampleTests.m; sourceTree = "<group>"; }; 63EFAB1022658352005EEAC6 /* GMPhobos_ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GMPhobos_ExampleTests.m; sourceTree = "<group>"; };
63EFAB1222658352005EEAC6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 63EFAB1222658352005EEAC6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
773D510F733436C849F61689 /* Pods-GMPhobos_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.debug.xcconfig"; path = "Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.debug.xcconfig"; sourceTree = "<group>"; };
873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; }; 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
94F09197043C44CCA8756031 /* Pods-GMPhobos_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.debug.xcconfig"; sourceTree = "<group>"; }; 94F09197043C44CCA8756031 /* Pods-GMPhobos_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example.debug.xcconfig"; sourceTree = "<group>"; };
D321A04E1F4A8F4100A6B934 /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; }; D321A04E1F4A8F4100A6B934 /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
...@@ -86,6 +89,7 @@ ...@@ -86,6 +89,7 @@
E49977051C59F40000623ABA /* GMPhotoTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GMPhotoTest.m; sourceTree = "<group>"; }; E49977051C59F40000623ABA /* GMPhotoTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GMPhotoTest.m; sourceTree = "<group>"; };
E4AF92BF1C71C6C700CF0B64 /* GMPhobosUtilTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GMPhobosUtilTest.m; sourceTree = "<group>"; }; E4AF92BF1C71C6C700CF0B64 /* GMPhobosUtilTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GMPhobosUtilTest.m; sourceTree = "<group>"; };
E4AF92C31C71CCE600CF0B64 /* libz.1.2.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.1.2.5.tbd; path = usr/lib/libz.1.2.5.tbd; sourceTree = SDKROOT; }; E4AF92C31C71CCE600CF0B64 /* libz.1.2.5.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.1.2.5.tbd; path = usr/lib/libz.1.2.5.tbd; sourceTree = SDKROOT; };
EBFF902F7DDD31799747B1A0 /* Pods-GMPhobos_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GMPhobos_Tests.debug.xcconfig"; path = "Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
...@@ -130,7 +134,7 @@ ...@@ -130,7 +134,7 @@
63EFAB0F22658352005EEAC6 /* GMPhobos_ExampleTests */, 63EFAB0F22658352005EEAC6 /* GMPhobos_ExampleTests */,
6003F58C195388D20070C39A /* Frameworks */, 6003F58C195388D20070C39A /* Frameworks */,
6003F58B195388D20070C39A /* Products */, 6003F58B195388D20070C39A /* Products */,
F0A9B46EC6044F749D0CDBCA /* Pods */, DD770357FB89002C494C140E /* Pods */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
...@@ -204,6 +208,7 @@ ...@@ -204,6 +208,7 @@
6003F5B7195388D20070C39A /* Tests-Info.plist */, 6003F5B7195388D20070C39A /* Tests-Info.plist */,
6003F5B8195388D20070C39A /* InfoPlist.strings */, 6003F5B8195388D20070C39A /* InfoPlist.strings */,
606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */,
F0A9B46EC6044F749D0CDBCA /* Pods */,
); );
name = "Supporting Files"; name = "Supporting Files";
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -227,6 +232,17 @@ ...@@ -227,6 +232,17 @@
path = GMPhobos_ExampleTests; path = GMPhobos_ExampleTests;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
DD770357FB89002C494C140E /* Pods */ = {
isa = PBXGroup;
children = (
773D510F733436C849F61689 /* Pods-GMPhobos_Example.debug.xcconfig */,
5BECCE13A9644D7FC0ABE491 /* Pods-GMPhobos_Example.release.xcconfig */,
EBFF902F7DDD31799747B1A0 /* Pods-GMPhobos_Tests.debug.xcconfig */,
39F84A4B7451E3C570109001 /* Pods-GMPhobos_Tests.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
F0A9B46EC6044F749D0CDBCA /* Pods */ = { F0A9B46EC6044F749D0CDBCA /* Pods */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -236,6 +252,7 @@ ...@@ -236,6 +252,7 @@
5A925189F951EA5E99801E5F /* Pods-GMPhobos_Tests.release.xcconfig */, 5A925189F951EA5E99801E5F /* Pods-GMPhobos_Tests.release.xcconfig */,
); );
name = Pods; name = Pods;
path = ..;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
/* End PBXGroup section */ /* End PBXGroup section */
...@@ -417,19 +434,13 @@ ...@@ -417,19 +434,13 @@
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example-frameworks.sh", "${PODS_ROOT}/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/GMCache/GMCache.framework", "${BUILT_PRODUCTS_DIR}/GMCache/GMCache.framework",
"${BUILT_PRODUCTS_DIR}/GMKit/GMKit.framework",
"${BUILT_PRODUCTS_DIR}/GMPhobos/GMPhobos.framework", "${BUILT_PRODUCTS_DIR}/GMPhobos/GMPhobos.framework",
"${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
"${BUILT_PRODUCTS_DIR}/TMCache/TMCache.framework", "${BUILT_PRODUCTS_DIR}/TMCache/TMCache.framework",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GMCache.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GMCache.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GMKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GMPhobos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GMPhobos.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TMCache.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TMCache.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
...@@ -601,7 +612,7 @@ ...@@ -601,7 +612,7 @@
}; };
6003F5C0195388D20070C39A /* Debug */ = { 6003F5C0195388D20070C39A /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 94F09197043C44CCA8756031 /* Pods-GMPhobos_Example.debug.xcconfig */; baseConfigurationReference = 773D510F733436C849F61689 /* Pods-GMPhobos_Example.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
...@@ -622,10 +633,11 @@ ...@@ -622,10 +633,11 @@
}; };
6003F5C1195388D20070C39A /* Release */ = { 6003F5C1195388D20070C39A /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 5973B392CD963C413ADE924A /* Pods-GMPhobos_Example.release.xcconfig */; baseConfigurationReference = 5BECCE13A9644D7FC0ABE491 /* Pods-GMPhobos_Example.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = 86R4V3XFLU;
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "GMPhobos/GMPhobos-Prefix.pch"; GCC_PREFIX_HEADER = "GMPhobos/GMPhobos-Prefix.pch";
INFOPLIST_FILE = "GMPhobos/GMPhobos-Info.plist"; INFOPLIST_FILE = "GMPhobos/GMPhobos-Info.plist";
...@@ -634,6 +646,7 @@ ...@@ -634,6 +646,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "c7e6dc21-c52f-40e4-a435-5e942f0af080"; PROVISIONING_PROFILE = "c7e6dc21-c52f-40e4-a435-5e942f0af080";
PROVISIONING_PROFILE_SPECIFIER = Wildcard;
TARGETED_DEVICE_FAMILY = 1; TARGETED_DEVICE_FAMILY = 1;
WRAPPER_EXTENSION = app; WRAPPER_EXTENSION = app;
}; };
...@@ -641,7 +654,7 @@ ...@@ -641,7 +654,7 @@
}; };
6003F5C3195388D20070C39A /* Debug */ = { 6003F5C3195388D20070C39A /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 5C8C0EC8AB1257BC31A5BCFC /* Pods-GMPhobos_Tests.debug.xcconfig */; baseConfigurationReference = EBFF902F7DDD31799747B1A0 /* Pods-GMPhobos_Tests.debug.xcconfig */;
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
...@@ -668,7 +681,7 @@ ...@@ -668,7 +681,7 @@
}; };
6003F5C4195388D20070C39A /* Release */ = { 6003F5C4195388D20070C39A /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 5A925189F951EA5E99801E5F /* Pods-GMPhobos_Tests.release.xcconfig */; baseConfigurationReference = 39F84A4B7451E3C570109001 /* Pods-GMPhobos_Tests.release.xcconfig */;
buildSettings = { buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
......
...@@ -7,11 +7,15 @@ ...@@ -7,11 +7,15 @@
// //
#import "GMAppDelegate.h" #import "GMAppDelegate.h"
#import <Phobos.h>
@implementation GMAppDelegate @implementation GMAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ {
Phobos.sharedClient.getTopController = ^UIViewController * _Nonnull{
return [UIViewController new];
};
// Override point for customization after application launch. // Override point for customization after application launch.
return YES; return YES;
} }
......
PODS: PODS:
- GMCache (0.2.3): - GMCache (1.0.1):
- TMCache (= 2.1.0) - TMCache (= 2.1.0)
- GMKit (1.1.3):
- GMKit/Category (= 1.1.3)
- GMKit/Color (= 1.1.3)
- GMKit/Constant (= 1.1.3)
- GMKit/FDFullscreenPopGesture (= 1.1.3)
- GMKit/Kit (= 1.1.3)
- GMKit/Protocol (= 1.1.3)
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/Category (1.1.3):
- GMKit/Color (= 1.1.3)
- GMKit/Constant (= 1.1.3)
- GMKit/Protocol (= 1.1.3)
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/Color (1.1.3):
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/Constant (1.1.3):
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/FDFullscreenPopGesture (1.1.3):
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/Kit (1.1.3):
- GMKit/Category (= 1.1.3)
- GMKit/Color (= 1.1.3)
- GMKit/Constant (= 1.1.3)
- GMKit/Protocol (= 1.1.3)
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMKit/Protocol (1.1.3):
- Masonry (= 1.1.0)
- SDWebImage (= 3.7.6)
- GMPhobos (1.3.4): - GMPhobos (1.3.4):
- GMCache - GMCache
- GMKit
- Masonry (1.1.0)
- SDWebImage (3.7.6):
- SDWebImage/Core (= 3.7.6)
- SDWebImage/Core (3.7.6)
- TMCache (2.1.0) - TMCache (2.1.0)
DEPENDENCIES: DEPENDENCIES:
...@@ -50,10 +11,7 @@ DEPENDENCIES: ...@@ -50,10 +11,7 @@ DEPENDENCIES:
SPEC REPOS: SPEC REPOS:
"git@git.wanmeizhensuo.com:gengmeiios/GMSpecs.git": "git@git.wanmeizhensuo.com:gengmeiios/GMSpecs.git":
- GMCache - GMCache
- GMKit
https://github.com/cocoapods/specs.git: https://github.com/cocoapods/specs.git:
- Masonry
- SDWebImage
- TMCache - TMCache
EXTERNAL SOURCES: EXTERNAL SOURCES:
...@@ -61,11 +19,8 @@ EXTERNAL SOURCES: ...@@ -61,11 +19,8 @@ EXTERNAL SOURCES:
:path: "../" :path: "../"
SPEC CHECKSUMS: SPEC CHECKSUMS:
GMCache: 09a3029c96fe130e3a21faef70b3d9d2ce92d639 GMCache: b78d8e46db864405e91d226ce640cc80d966c611
GMKit: 35f788243cceeddf3e13c5226b3ea0b5e08e2117 GMPhobos: 54e7aded6e4b6c69c1339c16c8693110f417a69d
GMPhobos: 1ee4b12cccd1df054bf9539357c5fc60a2d64a68
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
SDWebImage: c325cf02c30337336b95beff20a13df489ec0ec9
TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed
PODFILE CHECKSUM: ea0fac2144ac80baf8f21576cde49526c19991ad PODFILE CHECKSUM: ea0fac2144ac80baf8f21576cde49526c19991ad
......
...@@ -25,7 +25,6 @@ Pod::Spec.new do |s| ...@@ -25,7 +25,6 @@ Pod::Spec.new do |s|
s.platform = :ios, '8.0' s.platform = :ios, '8.0'
s.source_files = 'GMPhobos/Classes/*.{h,m}' s.source_files = 'GMPhobos/Classes/*.{h,m}'
s.dependency 'GMCache' s.dependency 'GMCache'
s.dependency 'GMKit'
s.library = 'z' s.library = 'z'
end end
...@@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (class, readonly, strong) Phobos *sharedClient; @property (class, readonly, strong) Phobos *sharedClient;
/** 用于Phobos库从old更新到new使用,在全之后删除相关逻辑 */ /** 用于Phobos库从old更新到new使用,在全之后删除相关逻辑 */
@property (nonatomic, assign) BOOL isGray; @property (nonatomic, assign) BOOL isGray;
// Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题 // Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#import "UIResponder+PhobosPV.h" #import "UIResponder+PhobosPV.h"
#import "PhobosUtil.h" #import "PhobosUtil.h"
#import "PhobosCustomVisibleController.h" #import "PhobosCustomVisibleController.h"
#import <GMKit/UIDevice+Resolutions.h>
#import <GMCache/GMCache.h> #import <GMCache/GMCache.h>
#import <objc/runtime.h> #import <objc/runtime.h>
static Phobos *_sharedClient; static Phobos *_sharedClient;
...@@ -195,7 +194,6 @@ static dispatch_queue_t _normalQueue; ...@@ -195,7 +194,6 @@ static dispatch_queue_t _normalQueue;
@"run_time": [PhobosUtil deviceRunTime], @"run_time": [PhobosUtil deviceRunTime],
@"uuid": [PhobosUtil deviceId], @"uuid": [PhobosUtil deviceId],
@"build_version_release": [[UIDevice currentDevice] systemVersion], @"build_version_release": [[UIDevice currentDevice] systemVersion],
@"build_model": [UIDevice deviceVersion],
}; };
[Phobos track:@"device_opened" attributes:dict sendNow:YES]; [Phobos track:@"device_opened" attributes:dict sendNow:YES];
} }
...@@ -294,7 +292,6 @@ static dispatch_queue_t _normalQueue; ...@@ -294,7 +292,6 @@ static dispatch_queue_t _normalQueue;
@"run_time": [PhobosUtil deviceRunTime], @"run_time": [PhobosUtil deviceRunTime],
@"uuid": [PhobosUtil deviceId], @"uuid": [PhobosUtil deviceId],
@"build_version_release": [[UIDevice currentDevice] systemVersion], @"build_version_release": [[UIDevice currentDevice] systemVersion],
@"build_model": [UIDevice deviceVersion],
}; };
[Phobos track:@"on_app_session_over" attributes:dict]; [Phobos track:@"on_app_session_over" attributes:dict];
[GMCache removeObjectAtDocumentPathWithkey:PhobosBeginTime]; [GMCache removeObjectAtDocumentPathWithkey:PhobosBeginTime];
...@@ -330,6 +327,7 @@ static dispatch_queue_t _normalQueue; ...@@ -330,6 +327,7 @@ static dispatch_queue_t _normalQueue;
} }
// 必须在此处调用一下referer,因为onControllerStart // 必须在此处调用一下referer,因为onControllerStart
[page initReferer]; [page initReferer];
[page initRefererLink];
[page initReferrerIdIfNil]; [page initReferrerIdIfNil];
[page initReferrerTabName]; [page initReferrerTabName];
page.inTime = [PhobosUtil currentTime]; page.inTime = [PhobosUtil currentTime];
...@@ -351,11 +349,13 @@ static dispatch_queue_t _normalQueue; ...@@ -351,11 +349,13 @@ static dispatch_queue_t _normalQueue;
[dict setObject:page.pageName forKey:@"page_name"]; [dict setObject:page.pageName forKey:@"page_name"];
[dict setObject:page.businessId?:@"" forKey:@"business_id"]; [dict setObject:page.businessId?:@"" forKey:@"business_id"];
[dict setObject:page.referer?:@"" forKey:@"referrer"]; [dict setObject:page.referer?:@"" forKey:@"referrer"];
[dict setObject:page.refererLink ? : @[] forKey:@"referer_link"];
[dict setObject:@(0) forKey:@"fake"]; [dict setObject:@(0) forKey:@"fake"];
[dict setObject:page.referrerId ? : @"" forKey:@"referrer_id"]; [dict setObject:page.referrerId ? : @"" forKey:@"referrer_id"];
[dict setObject:page.extraParam ? : @"" forKey:@"extra_param"]; [dict setObject:page.extraParam ? : @"" forKey:@"extra_param"];
[dict setObject:page.referrerTabName ? : @"" forKey:@"referrer_tab_name"]; [dict setObject:page.referrerTabName ? : @"" forKey:@"referrer_tab_name"];
[dict setObject:page.isPush.intValue ? @(page.isPush.intValue) : @(0) forKey:@"is_push"]; [dict setObject:page.isPush.intValue ? @(page.isPush.intValue) : @(0) forKey:@"is_push"];
if (page.inTime.length > 0) { if (page.inTime.length > 0) {
// 页面显示时间为空时不记录页面pv事件 // 页面显示时间为空时不记录页面pv事件
[Phobos track:@"page_view" attributes:dict]; [Phobos track:@"page_view" attributes:dict];
...@@ -372,6 +372,11 @@ static dispatch_queue_t _normalQueue; ...@@ -372,6 +372,11 @@ static dispatch_queue_t _normalQueue;
* @since 0.0.1 * @since 0.0.1
*/ */
- (NSDictionary *)prepareDictionaryForEvent:(NSString *)eventName attributes:(NSDictionary *)attributes{ - (NSDictionary *)prepareDictionaryForEvent:(NSString *)eventName attributes:(NSDictionary *)attributes{
[self catchNullForEvent:eventName attributes:attributes];
NSArray *refererLink = _sharedClient.visibleController.refererLink;
NSMutableDictionary *attributesParams = [NSMutableDictionary dictionaryWithDictionary:attributes];
[attributesParams setValue:refererLink ? : @[] forKey:@"referer_Link"];
attributes = attributesParams;
[self catchNullForEvent:eventName attributes:attributes]; [self catchNullForEvent:eventName attributes:attributes];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
@try { @try {
...@@ -388,7 +393,7 @@ static dispatch_queue_t _normalQueue; ...@@ -388,7 +393,7 @@ static dispatch_queue_t _normalQueue;
[deviceParams setValue:_netStatus forKey:@"is_WiFi"]; [deviceParams setValue:_netStatus forKey:@"is_WiFi"];
[deviceParams setValue:[PhobosUtil getIPAddress:YES] forKey:@"ip"]; [deviceParams setValue:[PhobosUtil getIPAddress:YES] forKey:@"ip"];
[deviceParams setValue:_networkStatus forKey:@"net_type"]; [deviceParams setValue:_networkStatus forKey:@"net_type"];
[deviceParams setValue:[UIDevice platform] forKey:@"model"]; [deviceParams setValue:[PhobosUtil platform] forKey:@"model"];
[deviceParams setValue:[UIDevice currentDevice].systemVersion forKey:@"sys_version"]; [deviceParams setValue:[UIDevice currentDevice].systemVersion forKey:@"sys_version"];
NSMutableDictionary *appParams = [NSMutableDictionary new]; NSMutableDictionary *appParams = [NSMutableDictionary new];
...@@ -470,7 +475,7 @@ static dispatch_queue_t _normalQueue; ...@@ -470,7 +475,7 @@ static dispatch_queue_t _normalQueue;
+ (void)track:(NSString *)eventName attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI { + (void)track:(NSString *)eventName attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI {
if (!Phobos.sharedClient.isGray) { if (!Phobos.sharedClient.isGray) {
[OldPhobos track:eventName attributes:attributes sendNow:sendNow currentAPI:currentAPI]; [OldPhobos track:eventName attributes:attributes currentAPI:currentAPI];
return; return;
} }
[self track:eventName attributes:attributes sendNow:NO currentAPI:currentAPI]; [self track:eventName attributes:attributes sendNow:NO currentAPI:currentAPI];
...@@ -724,5 +729,4 @@ static dispatch_queue_t _normalQueue; ...@@ -724,5 +729,4 @@ static dispatch_queue_t _normalQueue;
- (void (^)(NSArray *))phobosSendDataBlock { - (void (^)(NSArray *))phobosSendDataBlock {
return objc_getAssociatedObject(self, @selector(phobosSendDataBlock)); return objc_getAssociatedObject(self, @selector(phobosSendDataBlock));
} }
@end @end
...@@ -75,5 +75,11 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -75,5 +75,11 @@ NS_ASSUME_NONNULL_BEGIN
*/ */
@property (nonatomic, copy) NSString *isPush; @property (nonatomic, copy) NSString *isPush;
/**
获取上一个页面链路的page_name link by 7.20.0 如果有此页面有page_name则添加 , 没有添加""
*/
@property (nonatomic, copy) NSArray *refererLink;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -53,6 +53,8 @@ typedef void (^SendDataSuccessBlock)(NSInteger code); ...@@ -53,6 +53,8 @@ typedef void (^SendDataSuccessBlock)(NSInteger code);
+ (BOOL)isNonEmpty:(NSString *)string; + (BOOL)isNonEmpty:(NSString *)string;
+ (NSData *)encodeJSON:(id)obj; + (NSData *)encodeJSON:(id)obj;
+ (NSString *)deviceId; + (NSString *)deviceId;
/** 获取手机型号 */
+ (NSString *)platform;
/** /**
* 获取IP地址 * 获取IP地址
*/ */
......
...@@ -359,6 +359,14 @@ ...@@ -359,6 +359,14 @@
return [NSString stringWithFormat:@"%ld", (long)count]; return [NSString stringWithFormat:@"%ld", (long)count];
} }
/** 获取手机型号 */
+ (NSString *)platform {
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
return platform;
}
/*** /***
* 网卡地址 * 网卡地址
**/ **/
......
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
*/ */
- (void)initReferer; - (void)initReferer;
/**
// 只适用于链路中页面浏览PVLink 添加 refererLink 参数
*/
- (void)initRefererLink;
/** /**
此方法在onPvStart时调用,如果发现已经有值了,不会给referrerId再次赋值 此方法在onPvStart时调用,如果发现已经有值了,不会给referrerId再次赋值
*/ */
......
...@@ -45,6 +45,47 @@ ...@@ -45,6 +45,47 @@
} }
} }
// 只适用于链路中页面浏览PVLink 添加 refererLink 参数
- (void)initRefererLink {
if ([self isKindOfClass:[UIViewController class]]) {
// 分present与navigation两种情况
UIViewController *me = (UIViewController *)self;
if (me.presentingViewController != nil) {
// app全局只有一个navigation,发现此时用navigation.topViewController presentViewController时,最终使用的是navigation弹出的
// 所以此处要判断,如果是navigation弹出,最后还是要定位到topViewController
if ([me.presentingViewController isKindOfClass:[UINavigationController class]]) {
UIViewController *top = ((UINavigationController *)me.presentingViewController).topViewController;
NSMutableArray *tempRefererLink = [NSMutableArray arrayWithArray:top.refererLink];
[tempRefererLink addObject:top.pageName];
objc_setAssociatedObject(self, @selector(pageLink), tempRefererLink, OBJC_ASSOCIATION_COPY);
} else {
NSMutableArray *tempRefererLink = [NSMutableArray arrayWithArray:me.presentingViewController.refererLink];
[tempRefererLink addObject:me.presentingViewController.pageName];
objc_setAssociatedObject(self, @selector(pageLink), tempRefererLink, OBJC_ASSOCIATION_COPY);
}
} else {
NSArray *navigationPool = ((UIViewController *)self).navigationController.viewControllers;
NSInteger refererIndex = navigationPool.count - 2;
if (refererIndex < 0 ) {
return ;
}
UIViewController *controller = navigationPool[refererIndex];
NSMutableArray *tempRefererLink = [NSMutableArray arrayWithArray:controller.refererLink];
[tempRefererLink addObject:controller.pageName];
objc_setAssociatedObject(self, @selector(refererLink), tempRefererLink, OBJC_ASSOCIATION_COPY);
}
}
}
- (void)setRefererLink:(NSArray *)refererLink {
objc_setAssociatedObject(self, @selector(refererLink), refererLink, OBJC_ASSOCIATION_COPY);
}
-(NSArray *)refererLink {
NSArray *refererLink = objc_getAssociatedObject(self, @selector(refererLink));
return refererLink;
}
/** /**
此方法在onPvStart时调用,给referrerTabName赋值 此方法在onPvStart时调用,给referrerTabName赋值
*/ */
......
//
// Phobos.h
// GengmeiDoctor
// Data Statistic Client For Mars
// Created by Thierry on 16/1/26.
// Copyright © 2016年 wanmeizhensuo. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PhobosPVProtocol.h"
#import <CoreLocation/CLLocation.h>
#import "PhobosConfig.h"
NS_ASSUME_NONNULL_BEGIN
@interface OldPhobos : NSObject
/**
* @brief 开启Phobos统计,默认以BATCH方式发送log.
*
* @param appName 通常由数据端与客户端一起确认的区分不同app的名字
* @param channelId 发布渠道
*
* @return Phobos实例
*
* @since 0.0.1
*/
+ (OldPhobos *)clientWithAppName:(NSString *)appName channelId:(NSString *)channelId;
+ (instancetype)sharedClient;
+ (void)setSharedClient:(OldPhobos *)client;
#pragma mark - SDK配置
// Phobos在处理业务端传递来的参数时会检查是否某个value为空,如果为空会调用这个block以通知业务层,业务层可以上报这个异常,以助解决问题
@property(nonatomic, copy) void (^captureNullExpection) (NSString *eventId, NSDictionary *info);
/**
网络状态 wifi=1, mobile=0, 不连通=-1
*/
@property (nonatomic, copy) NSString *netStatus;
/**
//没有网络连接
public static final String NETWORN_NONE = "none";
//wifi连接
public static final String NETWORN_WIFI = "wifi";
//手机网络数据连接类型
public static final String NETWORN_2G = "2G";
public static final String NETWORN_3G = "3G";
public static final String NETWORN_4G = "4G";
public static final String NETWORN_MOBILE = "other";
*/
@property (nonatomic, copy) NSString *networkStatus;
/**
* @brief 设置是否打印sdk的log信息,默认不开启
*
* @since 0.0.1
*/
@property (assign, nonatomic) BOOL logEnabled;
/**
* @brief 设置当前登录用户的ID,如果没有默认为@""
*
*
* @since 0.0.2
*/
@property (strong, nonatomic) NSString *userId;
/*!
* @author zhaiguojun, 16-05-31
*
* @brief 用户当前的城市id
*
*
* @since 0.2.7
*/
@property (strong, nonatomic) NSString *currentCityId;
@property (strong, nonatomic) CLLocation *gps;
/**
* 记录用户类型
*/
@property (strong, nonatomic) NSMutableDictionary *userType;
/**
数据接收的服务器API
*/
@property (copy, nonatomic) NSString *serverAPI;
/**
当前APP请求接口的 APIHOST(GMServerDomains.apiHost 主要用于flutter AppDelegate 中初始化需要传值
*/
@property (nonatomic, copy) NSString *apiHost;
/**
当前APP请求接口的 cookie(主要用于flutter) 获取到cookie 的时候穿过来 或者cookie 有变化的时候传过来
*/
@property (nonatomic, copy) NSString *cookie;
/**
灰度组, since 7.7.65
*/
@property (nonatomic, copy) NSString *greyType;
/**
包的类型:APPSTORE、RELEASE、DEBUG
*/
@property (nonatomic, assign) PhobosSigningType signingType;
/**
从主项目获取当前显示的controller
*/
@property (nonatomic, copy) UIViewController * (^getTopController) (void);
#pragma mark - 事件采集
/**
* @brief 自定义事件,数量统计.
*
* @param eventId 事件Id
* @attributes 参数
* @sendNow 是否实时发送,默认为NO
*
* @since 0.0.1
*/
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes;
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow;
+ (void)track:(NSString *)eventId;
/**
* @brief 自定义事件,数量统计 7730 精准曝光.
*
* @param eventId 事件Id
* @attributes 参数
* @sendNow 是否实时发送,默认为NO
* @currentAPI 当前传过来的API
* @
*/
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes currentAPI:(NSString *)currentAPI;
+ (void)track:(NSString *)eventId attributes:(NSDictionary *)attributes sendNow:(BOOL)sendNow currentAPI:(NSString *)currentAPI;
+ (void)track:(NSString *)eventId currentAPI:(NSString *)currentAPI;
/**
* @author 翟国钧, 16-02-03 16:02:30
*
* @brief H5调用的埋点方法
*
* @param jsonString h5传过来的参数
*
* @since 0.0.1
*/
+ (void)trackJsEvent:(NSString *)jsonString;
/**
* @brief PV事件开始。当controller viewWillAppear时调用
*/
- (void)onPVStart:(UIResponder<PhobosPVProtocol> *)page;
/**
* @brief PV事件结束。当controller viewWillDisAppear时调用
*/
- (void)onPVEnd:(UIResponder<PhobosPVProtocol> *)page;
/**
* @author 翟国钧, 16-03-08 11:03:45
*
* @brief 有些事件需要模拟pv事件,统一用该方法处理,in out 时间相同.点击一次即触发
*
* @param pageName 控件所在VC的pageName
* @param bid 业务id
* @param referer 上个月面的pagename
*
* @since 5.9.1
*/
- (void)simulativePV:(NSString *)pageName businessId:(NSString *)bid referer:(NSString *)referer;
@end
NS_ASSUME_NONNULL_END
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment