ARAnalytics 5.0.1

ARAnalytics 5.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年9月

Orta TheroxAsh Furrow 维护。



  • 作者
  • Orta 和 Daniel Haight

ARAnalytics v4

ARAnalytics 是 iOS 中的 Analytical,Ruby 中的 JavaScript 中的 Analytics.js。

ARAnalytics 是一个分析抽象库,提供了一个合理的 API 来跟踪事件和用户数据。它目前支持 iOS 上的:Mixpanel、Localytics、Flurry、GoogleAnalytics、KISSmetrics、Crittercism、Crashlytics、Fabric、Bugsnag、Countly、Helpshift、Tapstream、NewRelic、Amplitude、HockeyApp、HockeyAppLib、ParseAnalytics、HeapAnalytics、Chartbeat、UMengAnalytics、Librato、Segmentio、Swrve、YandexMobileMetrica、Adjust、AppsFlyer、Branch、Snowplow、Sentry、Intercom、Keen、Adobe 和 MobileAppTracker/Tune。对于 OS X:KISSmetrics、Mixpanel 和 HockeyApp。

它通过使用 CocoaPods 子规范来实现这一点,让您选择您想使用的库。您也可以使用任何提供程序的官方 API。此外,它还附带一个惊人的 DSL 来清晰您的代码。

更新日志

集成

您不应该只使用:`pod "ARAnalytics"`。从 CocoaPods 0.36+ 开始,您应该做一些类似以下的事情

  pod "ARAnalytics", :subspecs => ["Mixpanel", "Segmentio", "HockeyApp"]

使用

设置

一旦您安装了库,您可以使用个别方法(例如)[ARAnalytics setupTestFlightWithTeamToken:@"TOKEN"]来启动每个分析平台,或者使用我们的常量使用通用的 setupWithAnalytics。

  [ARAnalytics setupWithAnalytics:@{
      ARCrittercismAppID : @"KEY",
      ARKISSMetricsAPIKey : @"KEY",
      ARGoogleAnalyticsID : @"KEY"
   }];

日志

提交存储在在线控制台中的控制台日志,对于崩溃报告,这提供了一种提供跟踪的方法。`ARLog(@"Looked at Artwork (%@)", _artwork.name);`

extern void ARLog (NSString *format, ...);

事件跟踪

/// Submit user events
+ (void)event:(NSString *)event;
+ (void)event:(NSString *)event withProperties:(NSDictionary *)properties;

// Add extra properties to get sent along with every event
+ (void)addEventSuperProperties:(NSDictionary *)superProperties;


/// Let ARAnalytics deal with the timing of an event
+ (void)startTimingEvent:(NSString *)event;
+ (void)finishTimingEvent:(NSString *)event;

错误跟踪

/// Submit errors to providers
+ (void)error:(NSError *)error;
+ (void)error:(NSError *)error withMessage:(NSString *)message;

用户属性

/// Set a per user property
+ (void)identifyUserWithID:(NSString *)userID andEmailAddress:(NSString *)email;
+ (void)setUserProperty:(NSString *)property toValue:(NSString *)value;
+ (void)incrementUserProperty:(NSString*)counterName byInt:(int)amount;

页面浏览跟踪

/// Monitor Navigation changes as page view
+ (void)pageView:(NSString *)pageTitle;
+ (void)monitorNavigationViewController:(UINavigationController *)controller;

除此之外,您还可以使用原始SDK。ARAnalytics为许多提供者提供了一个通用API,因此它会尝试在提供者之间映射大部分功能,但如果您要执行复杂操作,也请期待使用您提供商的SDK。

面向方面的DSL

ARAnalytics/DSL子规范中还有一个类似于DSL的设置构造器,让您一次完成所有分析设置。例如使用方法

[ARAnalytics setupWithAnalytics: @{ /* keys */ } configuration: @{
   ARAnalyticsTrackedScreens: @[ @{
      ARAnalyticsClass: UIViewController.class,
      ARAnalyticsDetails: @[ @{
          ARAnalyticsPageNameKeyPath: @"title",
      }]
  }],
   ARAnalyticsTrackedEvents: @[@{
      ARAnalyticsClass: MyViewController.class,
      ARAnalyticsDetails: @[ @{
          ARAnalyticsEventName: @"button pressed",
          ARAnalyticsSelectorName: NSStringFromSelector(@selector(buttonPressed:)),
      },
      @{
          ARAnalyticsEventName: @"switch switched",
          ARAnalyticsSelectorName: NSStringFromSelector(@selector(switchSwitched:)),
      }]
   },
   ...

上述配置指定,当在MyViewController的任何实例上调用选择器buttonPressed:时,将发送“按钮按下”事件。此外,每当调用viewDidAppear:时,每个视图控制器都会发送一个带有其标题的页面视图作为页面名称。在DSL中,还可以使用块进行高级用法,选择性禁用某些事件,提供自定义页面/事件属性字典,或者提供动态页面/事件名称。

[ARAnalytics setupWithAnalytics: @{ /* keys */ } configuration: @{
   ARAnalyticsTrackedScreens: @[ @{
      ARAnalyticsClass: UIViewController.class,
      ARAnalyticsDetails: @[ @{
          ARAnalyticsProperties: ^NSDictionary*(MyViewController *controller, NSArray *parameters) {
            return @{ /* Custom screen view properties */ };
          }, 
          ARAnalyticsPageNameBlock:  ^NSDictionary*(MyViewController *controller, NSArray *parameters, NSDictionary *customProperties) {
            return [NSString stringWithFormat:@"%@:%@:%@",controller.a, controller.b, controller.c];
          }
      }]
  }],
  ARAnalyticsTrackedEvents: @[ @{
    ARAnalyticsClass: MyViewController.class,
    ARAnalyticsDetails: @[ 
      @{
        ARAnalyticsSelectorName: NSStringFromSelector(@selector(buttonPressed:)),
        ARAnalyticsShouldFire: ^BOOL(MyViewController *controller, NSArray *parameters) {
          return /* some condition */;
        },
        ARAnalyticsProperties: ^NSDictionary*(MyViewController *controller, NSArray *parameters) {
          return @{ /* Custom properties */ };
        },
        ARAnalyticsEventNameBlock:  ^NSDictionary*(MyViewController *controller, NSArray *parameters, NSDictionary *customProperties) {
          return [NSString stringWithFormat:@"%@ pressed", [(UIButton*)parameters[0] titleLabel].text];
        }
      },
      /* more events for this class */
    ]
  },
  ...

请注意,当在UIViewControllers上使用页面跟踪时,所有实例的title属性必须具有非nil值。如果您的应用程序使用嵌套视图控制器,则可能不是这种情况。在这种情况下,请使用ARAnalyticsShouldFire块来禁用这些视图控制器发送分析事件。

ARAnalyticsShouldFire: ^BOOL(MyViewController *controller, NSArray *parameters) {
  return controller.title != nil;
},

HockeyApp

从HockeyApp版本3.7.0开始,HockeyApp提供者将自动记录事件并将它们包括在崩溃报告中,从而向报告添加“面包屑”,以便在崩溃报告中提供有用的上下文。使用ARLog()记录的任何消息也将包含在报告中。

但是请注意,在iOS中,syslogd不会长期保留日志,因此您只需期望应用程序崩溃后立即重新启动应用程序的人的日志。

子规范完整列表

iOS: MixpanelLocalyticsFlurryGoogleAnalyticsFirebaseKISSmetricsCrittercismCountlyBugsnagHelpshiftTapstreamNewRelicAmplitudeHockeyAppHockeyAppLibParseAnalyticsHeapAnalyticsChartbeatUMengAnalyticsSegmentioSwrveYandexMobileMetricaAdjustIntercomLibratoCrashlyticsFabricAppsFlyerBranchSnowplowSentryKeenAdobeMobileAppTrackerLeanplumAppboy

OSX: KISSmetricsOSXHockeyAppOSXMixpanelOSXParseAnalyticsOSX

贡献或添加新的分析提供程序

请参阅贡献