GoogleAnalyst.m 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. //
  2. // GoogleAnalyst.m
  3. // iSales-NPD
  4. //
  5. // Created by Jack on 2017/3/28.
  6. // Copyright © 2017年 United Software Applications, Inc. All rights reserved.
  7. //
  8. #import "GoogleAnalyst.h"
  9. #import "Analytics.h"
  10. #import "RANetwork.h"
  11. @implementation GoogleAnalyst
  12. #pragma mark - Private
  13. + (NSString *)currentDateString {
  14. NSDate *date = [NSDate date];
  15. NSDateFormatter *formate = [[NSDateFormatter alloc] init];
  16. formate.dateFormat = @"YYYY-MM-dd HH:mm:ss";
  17. return [formate stringFromDate:date];
  18. }
  19. #pragma mark - Public
  20. + (void)trackScreen:(NSString *)screenName {
  21. if (!screenName.length) {
  22. return;
  23. }
  24. // 屏幕追踪
  25. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  26. [tracker set:kGAIScreenName value:screenName];
  27. [tracker send:[[GAIDictionaryBuilder createScreenView] build]];
  28. // [tracker set:kGAIScreenName value:nil]; // 清除值,直接在追踪器设置值将是持久值,并且会应用于多次匹配。
  29. }
  30. + (NSString *)currentTrackScreen {
  31. return [[[GAI sharedInstance] defaultTracker] get:kGAIScreenName];
  32. }
  33. + (void)trackEventCategory:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber *)value {
  34. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  35. [tracker send:[[GAIDictionaryBuilder createEventWithCategory:category action:action label:label value:value] build]];
  36. }
  37. + (void)trackTimingWithCategory:(NSString *)category interval:(NSTimeInterval)loadTime name:(NSString *)name label:(NSString *)label {
  38. id tracker = [[GAI sharedInstance] defaultTracker];
  39. // 以毫秒表示的计时值
  40. [tracker send:[[GAIDictionaryBuilder createTimingWithCategory:category
  41. interval:@((NSUInteger)(loadTime * 1000))
  42. name:name
  43. label:label] build]];
  44. }
  45. + (void)trackSignInUserID:(NSString *)userID {
  46. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  47. [tracker set:kGAIUserId value:userID];
  48. }
  49. + (void)trackSignOut {
  50. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  51. // NSString *userId = [tracker get:kGAIUserId];
  52. [tracker set:kGAIUserId value:nil];
  53. }
  54. + (void)trackProduct:(NSString *)productName action:(NSString *)action count:(NSNumber *)count{
  55. AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
  56. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  57. GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
  58. for (NSString *product_name in [productName componentsSeparatedByString:@","]) {
  59. GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
  60. [product setName:product_name];
  61. if (count) {
  62. [product setQuantity:count];
  63. }
  64. [builder addProduct:product];
  65. [builder addProductImpression:product impressionList:@"Products" impressionSource:nil];
  66. }
  67. GAIEcommerceProductAction *paction = [[GAIEcommerceProductAction alloc] init];
  68. if ([action isEqualToString:@"Add To Cart"]) {
  69. [paction setAction:kGAIPAAdd];
  70. // 自定义指标 Add To Cart
  71. NSString *metricValue4 = @"1";
  72. [tracker set:[GAIFields customMetricForIndex:2] value:metricValue4]; //
  73. } else {
  74. [paction setAction:kGAIPADetail];
  75. // 自定义指标 View A Model
  76. NSString *metricValue3 = @"1";
  77. [tracker set:[GAIFields customMetricForIndex:1] value:metricValue3]; //
  78. }
  79. [builder setProductAction:paction];
  80. // 自定义维度
  81. NSString *dimensionValue1 = productName;
  82. [tracker set:[GAIFields customDimensionForIndex:1] value:dimensionValue1]; // Model Name
  83. NSString *dimensionValue2 = appDelegate.user;
  84. [tracker set:[GAIFields customDimensionForIndex:2] value:dimensionValue2]; // User Name
  85. NSString *dimensionValue3 = appDelegate.customerInfo[@"customer_name"];
  86. [tracker set:[GAIFields customDimensionForIndex:3] value:dimensionValue3]; // Customer Name
  87. //----------------
  88. [tracker send:[builder build]];
  89. [self clearTracker];
  90. }
  91. + (void)clearTracker {
  92. id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
  93. [tracker set:[GAIFields customMetricForIndex:3] value:nil]; //
  94. [tracker set:[GAIFields customMetricForIndex:4] value:nil];
  95. [tracker set:[GAIFields customDimensionForIndex:1] value:nil];
  96. // [tracker set:[GAIFields customDimensionForIndex:2] value:nil];
  97. // [tracker set:[GAIFields customDimensionForIndex:3] value:nil];
  98. }
  99. @end