Commit e932e0dd authored by 翟国钧's avatar 翟国钧

bugfix:business_id 为空

parents 1cb95fc8 ce37bb8b
......@@ -208,12 +208,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "GMPhobos_Example" */;
buildPhases = (
9C816B48AC518C7C51C2DAE6 /* 📦 Check Pods Manifest.lock */,
9C816B48AC518C7C51C2DAE6 /* [CP] Check Pods Manifest.lock */,
6003F586195388D20070C39A /* Sources */,
6003F587195388D20070C39A /* Frameworks */,
6003F588195388D20070C39A /* Resources */,
FEDD47C43B929695EFF32BE0 /* 📦 Embed Pods Frameworks */,
B1BE839C8D7CB38052ED84D1 /* 📦 Copy Pods Resources */,
FEDD47C43B929695EFF32BE0 /* [CP] Embed Pods Frameworks */,
B1BE839C8D7CB38052ED84D1 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
......@@ -228,12 +228,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "GMPhobos_Tests" */;
buildPhases = (
5F02FD34F57153E44D4AC212 /* 📦 Check Pods Manifest.lock */,
5F02FD34F57153E44D4AC212 /* [CP] Check Pods Manifest.lock */,
6003F5AA195388D20070C39A /* Sources */,
6003F5AB195388D20070C39A /* Frameworks */,
6003F5AC195388D20070C39A /* Resources */,
6A6A2941869562845661D8FF /* 📦 Embed Pods Frameworks */,
680392E325EDB9514EAD7BF6 /* 📦 Copy Pods Resources */,
6A6A2941869562845661D8FF /* [CP] Embed Pods Frameworks */,
680392E325EDB9514EAD7BF6 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
......@@ -304,14 +304,14 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
5F02FD34F57153E44D4AC212 /* 📦 Check Pods Manifest.lock */ = {
5F02FD34F57153E44D4AC212 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Check Pods Manifest.lock";
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -319,14 +319,14 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
680392E325EDB9514EAD7BF6 /* 📦 Copy Pods Resources */ = {
680392E325EDB9514EAD7BF6 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Copy Pods Resources";
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -334,14 +334,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
6A6A2941869562845661D8FF /* 📦 Embed Pods Frameworks */ = {
6A6A2941869562845661D8FF /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Embed Pods Frameworks";
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -349,14 +349,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-GMPhobos_Tests/Pods-GMPhobos_Tests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9C816B48AC518C7C51C2DAE6 /* 📦 Check Pods Manifest.lock */ = {
9C816B48AC518C7C51C2DAE6 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Check Pods Manifest.lock";
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -364,14 +364,14 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
B1BE839C8D7CB38052ED84D1 /* 📦 Copy Pods Resources */ = {
B1BE839C8D7CB38052ED84D1 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Copy Pods Resources";
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -379,14 +379,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-GMPhobos_Example/Pods-GMPhobos_Example-resources.sh\"\n";
showEnvVarsInLog = 0;
};
FEDD47C43B929695EFF32BE0 /* 📦 Embed Pods Frameworks */ = {
FEDD47C43B929695EFF32BE0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "📦 Embed Pods Frameworks";
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -480,7 +480,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
......@@ -513,7 +513,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
......@@ -567,7 +567,6 @@
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR)",
);
......@@ -578,6 +577,7 @@
"$(inherited)",
);
INFOPLIST_FILE = "Tests/Tests-Info.plist";
LIBRARY_SEARCH_PATHS = "";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "c7e6dc21-c52f-40e4-a435-5e942f0af080";
......@@ -600,6 +600,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
INFOPLIST_FILE = "Tests/Tests-Info.plist";
LIBRARY_SEARCH_PATHS = "";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "c7e6dc21-c52f-40e4-a435-5e942f0af080";
......
PODS:
- GMCache (0.1.0):
- TMCache (~> 2.1.0)
- GMPhobos (0.2.4):
- GMPhobos (0.2.8):
- GMCache (~> 0.1.0)
- TMCache (2.1.0)
......@@ -14,9 +14,9 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
GMCache: a7b06a2d8a5a1c7cf023055c631ba9a0cd7c39fc
GMPhobos: 7a5b2620969116656d83de6d3d6c46bc749addd2
GMPhobos: fbadbb4fb6912b6e50fb7dd83802cac83dcaf899
TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed
PODFILE CHECKSUM: ab2b5ff1dcd8a35fd02cced6c06c7f9477b82d69
COCOAPODS: 1.0.0
COCOAPODS: 1.0.1
{
"name": "GMPhobos",
"version": "0.2.4",
"version": "0.2.8",
"summary": "GM statistic data sdk",
"description": "GM event track sdk.",
"homepage": "http://git.gengmei.cc/gengmeiios/GMPhobos",
......@@ -10,7 +10,7 @@
},
"source": {
"git": "http://git.gengmei.cc/gengmeiios/GMPhobos.git",
"tag": "0.2.4"
"tag": "0.2.8"
},
"platforms": {
"ios": "8.0"
......
PODS:
- GMCache (0.1.0):
- TMCache (~> 2.1.0)
- GMPhobos (0.2.4):
- GMPhobos (0.2.8):
- GMCache (~> 0.1.0)
- TMCache (2.1.0)
......@@ -14,9 +14,9 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
GMCache: a7b06a2d8a5a1c7cf023055c631ba9a0cd7c39fc
GMPhobos: 7a5b2620969116656d83de6d3d6c46bc749addd2
GMPhobos: fbadbb4fb6912b6e50fb7dd83802cac83dcaf899
TMCache: 95ebcc9b3c7e90fb5fd8fc3036cba3aa781c9bed
PODFILE CHECKSUM: ab2b5ff1dcd8a35fd02cced6c06c7f9477b82d69
COCOAPODS: 1.0.0
COCOAPODS: 1.0.1
This diff is collapsed.
......@@ -3,6 +3,7 @@
#import "Phobos.h"
#import "PhobosConfig.h"
#import "PhobosUtil.h"
#import "UIViewController+Phobos.h"
FOUNDATION_EXPORT double GMPhobosVersionNumber;
FOUNDATION_EXPORT const unsigned char GMPhobosVersionString[];
......
......@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>0.2.4</string>
<string>0.2.8</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
......
......@@ -48,8 +48,8 @@ EOM
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
......
......@@ -48,8 +48,8 @@ EOM
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
......
......@@ -7,8 +7,8 @@
//
#import <XCTest/XCTest.h>
#import "Phobos.h"
#import "WMCacheService.h"
#import <GMPhobos/Phobos.h>
#import <GMCache/WMCacheService.h>
#define PhobosCacheKey @"PhobosCacheKey"
......@@ -47,7 +47,7 @@ NSString *const MockCityId = @"beijing";
- (void)testClientWithUserId{
[_client setUserId:MockUserId];
[_client setCurrentCityId:MockCityId];
[_client track:MockEventId];
[Phobos track:MockEventId];
NSArray *array = [_cache fetchObjectAtDiskWithkey:PhobosCacheKey];
XCTAssertTrue(array.count == 1, @"array is empty");
NSDictionary *dict = [array objectAtIndex:0];
......@@ -113,4 +113,44 @@ NSString *const MockCityId = @"beijing";
XCTAssertTrue([keys containsObject:@"params"], @"Missing params");
}
- (void)testOnPageStartThenOnPageEnd {
[_client onPageStart:nil businessId:nil referer:nil];
NSDictionary *pageEnterParam1 = [_client valueForKey:@"_pageEnterParam"];
XCTAssertTrue(pageEnterParam1 != nil, @"pageEnterParam 应该实例化成功");
XCTAssertTrue(pageEnterParam1.allKeys.count == 4, @"pageEnterParam 应该有4个key");
[_client onPageStart:@"aaa" businessId:@"adf" referer:nil];
NSDictionary *pageEnterParam2 = [_client valueForKey:@"_pageEnterParam"];
XCTAssertTrue(pageEnterParam2 != nil, @"pageEnterParam 应该实例化成功");
XCTAssertTrue(pageEnterParam2.allKeys.count == 4, @"pageEnterParam 应该有4个key");
[_client onPageEnd];
[self paramUnNilCheck];
NSDictionary *pageEnterParam3 = [_client valueForKey:@"_pageEnterParam"];
XCTAssertTrue(pageEnterParam3.allKeys.count == 0, @"pageEnterParam 应该在onPageEnd后为空的");
}
// 某种情况下没有先走 onPageStart,只走了OnPageEnd,此时数据应该完整,某个key对应的value可以是空
- (void)testOnPageEnd {
[_client setValue:nil forKey:@"_pageEnterParam"];
[_client onPageEnd];
[self paramUnNilCheck];
}
- (void)testSimulativePageViewEvent {
[_client simulativePageViewEventWithPageName:nil BusinessId:nil referer:nil];
[self paramUnNilCheck];
}
- (void)paramUnNilCheck {
NSArray *array = [[WMCacheService sharedInstance] fetchObjectAtDiskWithkey:PhobosCacheKey];
XCTAssertTrue(array.count != 0, @"PhobosCacheKey 下面应该有数据");
NSDictionary *dic = array[0][@"params"];
XCTAssertTrue(dic[@"page_name"] != nil, @"page_name至少使用默认的空字符串");
XCTAssertTrue(dic[@"referer"] != nil, @"referer至少使用默认的空字符串");
XCTAssertTrue(dic[@"business_id"] != nil, @"business_id至少使用默认的空字符串");
}
@end
......@@ -8,7 +8,7 @@
Pod::Spec.new do |s|
s.name = "GMPhobos"
s.version = "0.2.5"
s.version = "0.2.9"
s.summary = "GM statistic data sdk"
s.description = <<-DESC
......
......@@ -95,7 +95,7 @@ static NSString *sdkVersion = @"110";
}
#pragma - mark notification handler
#pragma mark - notification handler
/**
* @brief 设置对APP的通知监听
*
......@@ -177,7 +177,8 @@ static NSString *sdkVersion = @"110";
[cache removeObjectAtDiskWithkey:PhobosBeginTime];
}
#pragma - mark track event handler
#pragma mark - track event handler
+ (void)track:(NSString *)eventId{
[Phobos track:eventId attributes:@{}];
}
......@@ -224,17 +225,12 @@ static NSString *sdkVersion = @"110";
}
}
#pragma - mark pv
#pragma mark - pv
- (void)onPageStart:(NSString *)pageName businessId:(NSString *)businessId referer:(NSString *)refererPageName{
self.businessId = [self isNonEmpty:businessId] ? businessId : @"";
self.refererPageName = [self isNonEmpty:refererPageName] ? refererPageName : @"";
if (![self isNonEmpty:pageName]) {
return;
}
_pageEnterParam = [NSMutableDictionary dictionaryWithObjectsAndKeys:
pageName,@"page_name",
self.businessId,@"business_id",
self.refererPageName,@"referer",
pageName?:@"",@"page_name",
businessId?:@"",@"business_id",
refererPageName?:@"",@"referer",
[self currentTime],@"in",nil];
}
......@@ -242,10 +238,10 @@ static NSString *sdkVersion = @"110";
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
@try {
[dict setObject:[self currentTime] forKey:@"out"];
[dict setObject:@([_pageEnterParam[@"in"] doubleValue]) forKey:@"in"];
[dict setObject:_pageEnterParam[@"page_name"] forKey:@"page_name"];
[dict setObject:_pageEnterParam[@"business_id"] forKey:@"business_id"];
[dict setObject:_pageEnterParam[@"referer"] forKey:@"referer"];
[dict setObject:@([_pageEnterParam[@"in"] doubleValue])?:@"" forKey:@"in"];
[dict setObject:_pageEnterParam[@"page_name"]?:@"" forKey:@"page_name"];
[dict setObject:_pageEnterParam[@"business_id"]?:@"" forKey:@"business_id"];
[dict setObject:_pageEnterParam[@"referer"]?:@"" forKey:@"referer"];
[dict setObject:@(0) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict];
......@@ -261,9 +257,9 @@ static NSString *sdkVersion = @"110";
@try {
[dict setObject:[self currentTime] forKey:@"in"];
[dict setObject:[self currentTime] forKey:@"out"];
[dict setObject:pageName forKey:@"page_name"];
[dict setObject:bid forKey:@"business_id"];
[dict setObject:referer forKey:@"referer"];
[dict setObject:pageName?:@"" forKey:@"page_name"];
[dict setObject:bid?:@"" forKey:@"business_id"];
[dict setObject:referer?:@"" forKey:@"referer"];
[dict setObject:@(1) forKey:@"fake"];
[Phobos track:@"page_view" attributes:dict];
......
//
// UIViewController+Phobos.h
// Pods
//
// Created by wangyang on 16/7/12.
//
//
#import <UIKit/UIKit.h>
@interface UIViewController (Phobos)
/**
* @author 翟国钧, 16-02-24 17:02:22
*
* @brief 埋点的时候,有些埋点都需要业务id,比如DoctorId,针对那些只能在父类中埋点的业务,要在子类中设置当前id,然后在父类中取到
* 在一些详情页的分享和收藏的时候,由于分享、收藏的方法在basewebview里,所以,统一在里面做处理,但是需要在子类中把想要的参数传过去。包括:type(类型)、from(来自哪)、businessId(对应业务id)
* @since 5.9.1
*/
@property (nonatomic, copy, nonnull) NSString *businessId;
/**
* @author 翟国钧 in 16-02-25 19:02:32
*
* @brief 获取前一个页面的pageName
*
* @since 5.9.1
*/
@property (nonatomic, strong, readonly, nonnull) NSString *referer;
/**
* @author 翟国钧 in 16-02-25 19:02:32
*
* 埋点pv事件中当前页面的别名
* @since 5.9.1
*/
@property (nonatomic, copy, nonnull) NSString *pageName;
@end
//
// UIViewController+Phobos.m
// Pods
//
// Created by wangyang on 16/7/12.
//
//
#import "UIViewController+Phobos.h"
#import <objc/runtime.h>
@implementation UIViewController (Phobos)
/**
* @author 翟国钧, 16-03-01 15:03:24
*
* @brief 取当前导航栈中当前VC的上级VC,如果该VC存在,就获取他的pageName
*
* @return 前一页的pageName
*
* @since 5.9.1
*/
- (NSString *)referer
{
NSArray *navigationPool = self.navigationController.viewControllers;
NSInteger refererIndex = navigationPool.count - 2;
if (refererIndex < 0 ) {
return @"";
}
UIViewController *controller = navigationPool[refererIndex];
return controller.pageName == nil ? @"" : controller.pageName;
}
- (NSString *)pageName {
NSString *name = objc_getAssociatedObject(self, @selector(pageName));
return name == nil ? @"" : name;
}
- (void)setPageName:(NSString *)pageName {
objc_setAssociatedObject(self, @selector(pageName), pageName, OBJC_ASSOCIATION_COPY);
}
- (NSString *)businessId {
NSString *businessId = objc_getAssociatedObject(self, @selector(businessId));
return businessId == nil ? @"" : businessId;
}
- (void)setBusinessId:(NSString *)businessId {
objc_setAssociatedObject(self, @selector(businessId), businessId, OBJC_ASSOCIATION_COPY);
}
@end
# Customise this file, documentation can be found here:
# https://github.com/fastlane/fastlane/tree/master/docs
# All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
# can also be listed using the `fastlane actions` command
# Change the syntax highlighting to Ruby
# All lines starting with a # are ignored when running `fastlane`
# By default, fastlane will send which actions are used
# No personal data is shared, more information on https://github.com/fastlane/enhancer
# Uncomment the following line to opt out
# opt_out_usage
# If you want to automatically update fastlane if a new version is available:
# update_fastlane
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "1.88.0"
default_platform :ios
platform :ios do
before_all do
end
desc "Release new version"
lane :release do |options|
path = "GMPhobos.podspec"
target_version = options[:version]
raise "The version is missed." if target_version.nil?
ensure_git_branch # 确认 master 分支
pod_install
pod_lib_lint(verbose: true, allow_warnings: true, sources: ["git@git.gengmei.cc:gengmeiios/GMSpecs.git","https://github.com/CocoaPods/Specs"], use_bundle_exec: true)
version_bump_podspec(path: path, version_number: target_version) # 更新 podspec
git_commit_all(message: "Bump version to #{target_version}") # 提交版本号修改
add_git_tag tag: target_version # 设置 tag
push_to_git_remote # 推送到 git 仓库
pod_push(path: path, repo: "GMSpecs", allow_warnings: true, sources: ["git@git.gengmei.cc:gengmeiios/GMSpecs.git","https://github.com/CocoaPods/Specs"]) # 提交到 CocoaPods
end
end
# More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/docs/Platforms.md
# All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
actions_path "#{File.join(Dir.home, '.Jaguar', 'actions')}"
import "#{File.join(Dir.home, '.Jaguar', 'fastfile', 'pod_fastfile')}"
platform :ios do
desc "Release new version"
lane :release do |options|
options[:name] = 'GMPhobos'
do_release(options)
end
end
\ No newline at end of file
......@@ -6,6 +6,11 @@ sudo gem install fastlane
```
# Available Actions
## iOS
### ios do_release
```
fastlane ios do_release
```
Do release new version
### ios release
```
fastlane ios release
......
......@@ -3,52 +3,39 @@
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.000514">
<testcase classname="fastlane.lanes" name="0: Verifying required fastlane version" time="0.000871">
</testcase>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000257">
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000305">
</testcase>
<testcase classname="fastlane.lanes" name="2: ensure_git_branch" time="0.006822">
<testcase classname="fastlane.lanes" name="2: Switch to ios do_release lane" time="0.000408">
</testcase>
<testcase classname="fastlane.lanes" name="3: pod_install" time="10.03506">
<testcase classname="fastlane.lanes" name="3: git_pull" time="2.396995">
</testcase>
<testcase classname="fastlane.lanes" name="4: pod_lib_lint" time="17.796841">
<testcase classname="fastlane.lanes" name="4: ensure_git_branch" time="0.018778">
</testcase>
<testcase classname="fastlane.lanes" name="5: version_bump_podspec" time="0.001254">
<testcase classname="fastlane.lanes" name="5: pod_install" time="23.128242">
</testcase>
<testcase classname="fastlane.lanes" name="6: git_commit_all" time="0.037435">
<testcase classname="fastlane.lanes" name="6: pod_lib_lint" time="0.001267">
</testcase>
<testcase classname="fastlane.lanes" name="7: add_git_tag" time="0.014082">
</testcase>
<testcase classname="fastlane.lanes" name="8: push_to_git_remote" time="2.367411">
</testcase>
<testcase classname="fastlane.lanes" name="9: pod_push" time="17.870847">
<failure message="/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/actions/actions_helper.rb:33:in `execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:162:in `block in execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:161:in `chdir'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:161:in `execute_action'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:109:in `trigger_action_by_name'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/fast_file.rb:140:in `method_missing'&#10;../../fastfile/pod_fastfile:20:in `block (2 levels) in parsing_binding'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/lane.rb:33:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/lane.rb:33:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:138:in `try_switch_to_lane'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:101:in `rescue in trigger_action_by_name'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:96:in `trigger_action_by_name'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/fast_file.rb:140:in `method_missing'&#10;Fastfile:8:in `block (2 levels) in parsing_binding'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/lane.rb:33:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/lane.rb:33:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:50:in `block in execute'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:46:in `chdir'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/runner.rb:46:in `execute'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/lane_manager.rb:46:in `cruise_lane'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/command_line_handler.rb:30:in `handle'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/commands_generator.rb:42:in `block (2 levels) in run'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/commander-4.3.5/lib/commander/command.rb:178:in `call'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/commander-4.3.5/lib/commander/command.rb:153:in `run'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/commander-4.3.5/lib/commander/runner.rb:428:in `run_active_command'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane_core-0.48.1/lib/fastlane_core/ui/fastlane_runner.rb:26:in `run!'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/commander-4.3.5/lib/commander/delegates.rb:15:in `run!'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/commands_generator.rb:159:in `run'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/commands_generator.rb:13:in `start'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/lib/fastlane/cli_tools_distributor.rb:47:in `take_off'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/gems/fastlane-1.90.0/bin/fastlane:5:in `&lt;top (required)&gt;'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/bin/fastlane:23:in `load'&#10;/Users/gengmei/.rvm/gems/ruby-2.1.1@newgemset/bin/fastlane:23:in `&lt;main&gt;'&#10;&#10;Could not find option 'use_libraries' in the list of available options: use_bundle_exec, verbose, allow_warnings, sources" />
</testcase>
......
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