在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:orta/ARAnalytics开源软件地址:https://github.com/orta/ARAnalytics开源编程语言:Objective-C 92.8%开源软件介绍:ARAnalytics v4ARAnalytics is to iOS what Analytical is to ruby, or Analytics.js is to javascript. ARAnalytics is an analytics abstraction library offering a sane API for tracking events and user data. It currently supports on 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 and MobileAppTracker/Tune. And for OS X: KISSmetrics, Mixpanel and HockeyApp. It does this by using CocoaPods subspecs to let you decide which libraries you'd like to use. You are free to also use the official API for any provider too. Also, it comes with an amazing DSL to clear up your methods. IntegrationYou shouldn't just use: pod "ARAnalytics", :subspecs => ["Mixpanel", "Segmentio", "HockeyApp"] UsageSetupOnce you've [ARAnalytics setupWithAnalytics:@{
ARCrittercismAppID : @"KEY",
ARKISSMetricsAPIKey : @"KEY",
ARGoogleAnalyticsID : @"KEY"
}]; LoggingSubmit a console log that is stored online, for crash reporting this provides a great way to provide breadcrumbs. extern void ARLog (NSString *format, ...); Event Tracking/// 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; Error Tracking/// Submit errors to providers
+ (void)error:(NSError *)error;
+ (void)error:(NSError *)error withMessage:(NSString *)message; User Properties/// 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; Page View Tracking/// Monitor Navigation changes as page view
+ (void)pageView:(NSString *)pageTitle;
+ (void)monitorNavigationViewController:(UINavigationController *)controller; On top of this you get access to use the original SDK. ARAnalytics provides a common API between lots of providers, so it will try to map most of the functionality between providers, but if you're doing complex things, expect to also use your provider's SDK. Aspect-Oriented DSLThere is also a DSL-like setup constructor in the [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:)),
}]
},
... The above configuration specifies that the "button pressed" event be sent whenever the selector [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 */
]
},
... Note that when using page tracking on ARAnalyticsShouldFire: ^BOOL(MyViewController *controller, NSArray *parameters) {
return controller.title != nil;
}, HockeyAppStarting with HockeyApp version 3.7.0, the HockeyApp provider will automatically keep logs of events and include those in crash reports, thus adding ‘breadcrumbs’ to your report and hopefully providing helpful context for your crash reports. Any messages logged with Note, however, that on iOS Full list of subspecsiOS: OSX: Contributing, or adding a new analytics providerSee Contributing |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论