WLAnalyticsManager.h 4 KB
/*
 Copyright 2010-2016 Warply Inc. All rights reserved.
 
 Redistribution and use in source and binary forms, without modification, 
 are permitted provided that the following conditions are met:
 
 1. Redistributions of source code must retain the above copyright notice, this
 list of conditions and the following disclaimer.
 
 2. Redistributions in binaryform must reproduce the above copyright notice,
 this list of conditions and the following disclaimer in the documentation
 and/or other materials provided with the distribution.
 
 THIS SOFTWARE IS PROVIDED BY THE WARPLY LTD ``AS IS'' AND ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
 EVENT SHALL WARPLY LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*!
 @header WLAnalyticsManager.h
 The Analytics Manager provides a functional interface for in-app analytics.
 Use the methods declared here to send in-app analytics wherever is needed within
 the application.
 @copyright Warply Inc.
 */

#import <Foundation/Foundation.h>

@class WLBaseItem;

/*!
 @class WLAnalyticsManager
 @discussion This manager handles the in-app analytics functionality of Warply
 service.
 */
@interface WLAnalyticsManager : NSObject

/*!
 @methodgroup Sending In-App Analytics
 */
/*!
 @abstract Sends an in-app analytic.
 @discussion This class method sends an in-app analytic event. This event is stored 
 into a local DB and is sent over to Warply service when a threshold of stored
 events is exceeded.
 @param event_id A string object that specifies the event that happened. Developer 
 defined string.
 @param page_id A string object that specifies where the event happened. Developer 
 defined string.
 @param action_metadata A dictionary object with metadata related for the event. 
 Developer defined dictionary.
 @seealso //apple_ref/occ/clm/WLAnalyticsManager/sendAnalyticsEventWithEvent_id:page_id:action_metadata: sendAnalyticsEventWithEvent_id:page_id:action_metadata:
 */
+ (void)logEventWithEventId:(NSString *)event_id pageId:(NSString *)page_id actionMetadata:(NSDictionary *)action_metadata;
/*!
 @abstract Sends an Urgent in-app analytic.
 @discussion This class method sends an urgent in-app analytic event. This event
 is sent to Warply service immediately. It is advised to use this type of event only
 in places of the application where almost real-time analytic reporting is required.
 @param event_id A string object that specifies the event that happened. Developer
 defined string.
 @param page_id A string object that specifies where the event happened. Developer
 defined string.
 @param action_metadata A dictionary object with metadata related for the event. 
 Developer defined dictionary.
 @seealso //apple_ref/occ/clm/WLAnalyticsManager/sendPriorityAnalyticsEventWithEvent_id:page_id:action_metadata: sendPriorityAnalyticsEventWithEvent_id:page_id:action_metadata:
 */
+ (void)logUrgentEventWithEventId:(NSString *)eventId pageId:(NSString *)pageId actionMetadata:(NSDictionary *)action_metadata;
/*!
 @abstract Sends an in-app analytic event indicating that the user interacted with the push.
 @param item The WLBaseItem representation of the push payload. You can create it like this: WLBaseItem *item = [WLBaseItem alloc] initWithAttributes:payload];
 terminates.
 */
+ (void)logUserEngagedPush:(WLBaseItem *)item;

+ (void)logUserReceivedPush:(WLBaseItem *)item;

//TODO: Add documentation
+ (void)logAppDidFinishLauchingEvent;
+ (void)logAppWillEnterForegroundEvent;
+ (void)logAppWillTerminateEvent;
+ (void)logAppDidEnterBackgroundEvent;


@end