| /*! | 
 |  @header    GAIDictionaryBuilder.h | 
 |  @abstract  Google Analytics iOS SDK Hit Format Header | 
 |  @copyright Copyright 2013 Google Inc. All rights reserved. | 
 |  */ | 
 |  | 
 | #import <Foundation/Foundation.h> | 
 |  | 
 | #import "GAIEcommerceProduct.h" | 
 | #import "GAIEcommerceProductAction.h" | 
 | #import "GAIEcommercePromotion.h" | 
 |  | 
 | /*! | 
 |  * Helper class to build a dictionary of hit parameters and values. | 
 |  * <br> | 
 |  * Examples: | 
 |  * <code> | 
 |  * id<GAITracker> t = // get a tracker. | 
 |  * [t send:[[[GAIDictionaryBuilder createEventWithCategory:@"EventCategory" | 
 |  *                                                  action:@"EventAction" | 
 |  *                                                   label:nil | 
 |  *                                                   value:nil] | 
 |  *     set:@"dimension1" forKey:[GAIFields customDimensionForIndex:1]] build]]; | 
 |  * </code> | 
 |  * This will send an event hit type with the specified parameters | 
 |  * and a custom dimension parameter. | 
 |  * <br> | 
 |  * If you want to send a parameter with all hits, set it on GAITracker directly. | 
 |  * <code> | 
 |  * [t set:kGAIScreenName value:@"Home"]; | 
 |  * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+" | 
 |  *                                                 action:@"PlusOne" | 
 |  *                                                 target:@"SOME_URL"] build]]; | 
 |  * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+" | 
 |  *                                                 action:@"Share" | 
 |  *                                                 target:@"SOME_POST"] build]]; | 
 |  * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+" | 
 |  *                                                 action:@"HangOut" | 
 |  *                                                 target:@"SOME_CIRCLE"] | 
 |  *     build]]; | 
 |  * </code> | 
 |  * You can override a value set on the tracker by adding it to the dictionary. | 
 |  * <code> | 
 |  * [t set:kGAIScreenName value:@"Home"]; | 
 |  * [t send:...]; | 
 |  * [t send[[[GAIDictionaryBuilder createEventWithCategory:@"click" | 
 |  *                                                 action:@"popup" | 
 |  *                                                  label:nil | 
 |  *                                                  value:nil] | 
 |  *     set:@"popup title" forKey:kGAIScreenName] build]]; | 
 |  * </code> | 
 |  * The values set via [GAIDictionaryBuilder set] or | 
 |  * [GAIDictionaryBuilder setAll] will override any existing values in the | 
 |  * GAIDictionaryBuilder object (i.e. initialized by | 
 |  * [GAIDictionaryBuilder createXYZ]). e.g. | 
 |  * <code> | 
 |  * GAIDictionaryBuilder *m = | 
 |  *     GAIDictionaryBuilder createTimingWithCategory:@"category" | 
 |  *                                          interval:@0 | 
 |  *                                              name:@"name" | 
 |  *                                             label:nil]; | 
 |  * [t send:[m.set:@"10" forKey:kGAITimingVar] build]; | 
 |  * [t send:[m.set:@"20" forKey:kGAITimingVar] build]; | 
 |  * </code> | 
 |  */ | 
 | @interface GAIDictionaryBuilder : NSObject | 
 |  | 
 | - (GAIDictionaryBuilder *)set:(NSString *)value | 
 |                        forKey:(NSString *)key; | 
 |  | 
 | /*! | 
 |  * Copies all the name-value pairs from params into this object, ignoring any | 
 |  * keys that are not NSString and any values that are neither NSString or | 
 |  * NSNull. | 
 |  */ | 
 | - (GAIDictionaryBuilder *)setAll:(NSDictionary *)params; | 
 |  | 
 | /*! | 
 |  * Returns the value for the input parameter paramName, or nil if paramName | 
 |  * is not present. | 
 |  */ | 
 | - (NSString *)get:(NSString *)paramName; | 
 |  | 
 | /*! | 
 |  * Return an NSMutableDictionary object with all the parameters set in this | 
 |  */ | 
 | - (NSMutableDictionary *)build; | 
 |  | 
 | /*! | 
 |  * Parses and translates utm campaign parameters to analytics campaign param | 
 |  * and returns them as a map. | 
 |  * | 
 |  * @param params url containing utm campaign parameters. | 
 |  * | 
 |  * Valid campaign parameters are: | 
 |  * <ul> | 
 |  * <li>utm_id</li> | 
 |  * <li>utm_campaign</li> | 
 |  * <li>utm_content</li> | 
 |  * <li>utm_medium</li> | 
 |  * <li>utm_source</li> | 
 |  * <li>utm_term</li> | 
 |  * <li>dclid</li> | 
 |  * <li>gclid</li> | 
 |  * <li>gmob_t</li> | 
 |  * <li>aclid</li> | 
 |  * <li>anid</li> | 
 |  * </ul> | 
 |  * <p> | 
 |  * Example: | 
 |  * http://my.site.com/index.html?utm_campaign=wow&utm_source=source | 
 |  * utm_campaign=wow&utm_source=source. | 
 |  * <p> | 
 |  * For more information on auto-tagging, see | 
 |  * http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55590 | 
 |  * <p> | 
 |  * For more information on manual tagging, see | 
 |  * http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55518 | 
 |  */ | 
 | - (GAIDictionaryBuilder *)setCampaignParametersFromUrl:(NSString *)urlString; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to an appview | 
 |  hit. | 
 |  | 
 |  Note that using this method will not set the screen name for followon hits.  To | 
 |  do that you need to call set:kGAIDescription value:<screenName> on the | 
 |  GAITracker instance. | 
 |  | 
 |  This method is deprecated.  Use createScreenView instead. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createAppView DEPRECATED_MSG_ATTRIBUTE("Use createScreenView instead."); | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to a screenview | 
 |  hit. | 
 |  | 
 |  Note that using this method will not set the screen name for followon hits.  To | 
 |  do that you need to call set:kGAIDescription value:<screenName> on the | 
 |  GAITracker instance. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createScreenView; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to an event hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createEventWithCategory:(NSString *)category | 
 |                                            action:(NSString *)action | 
 |                                             label:(NSString *)label | 
 |                                             value:(NSNumber *)value; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to an exception | 
 |  hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createExceptionWithDescription:(NSString *)description | 
 |                                                withFatal:(NSNumber *)fatal; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to an item hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createItemWithTransactionId:(NSString *)transactionId | 
 |                                                  name:(NSString *)name | 
 |                                                   sku:(NSString *)sku | 
 |                                              category:(NSString *)category | 
 |                                                 price:(NSNumber *)price | 
 |                                              quantity:(NSNumber *)quantity | 
 |                                          currencyCode:(NSString *)currencyCode; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to a social hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createSocialWithNetwork:(NSString *)network | 
 |                                            action:(NSString *)action | 
 |                                            target:(NSString *)target; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to a timing hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createTimingWithCategory:(NSString *)category | 
 |                                           interval:(NSNumber *)intervalMillis | 
 |                                               name:(NSString *)name | 
 |                                              label:(NSString *)label; | 
 |  | 
 | /*! | 
 |  Returns a GAIDictionaryBuilder object with parameters specific to a transaction | 
 |  hit. | 
 |  */ | 
 | + (GAIDictionaryBuilder *)createTransactionWithId:(NSString *)transactionId | 
 |                                       affiliation:(NSString *)affiliation | 
 |                                           revenue:(NSNumber *)revenue | 
 |                                               tax:(NSNumber *)tax | 
 |                                          shipping:(NSNumber *)shipping | 
 |                                      currencyCode:(NSString *)currencyCode; | 
 |  | 
 | /*! | 
 |  Set the product action field for this hit. | 
 |  */ | 
 | - (GAIDictionaryBuilder *)setProductAction:(GAIEcommerceProductAction *)productAction; | 
 |  | 
 | /*! | 
 |  Adds a product to this hit. | 
 |  */ | 
 | - (GAIDictionaryBuilder *)addProduct:(GAIEcommerceProduct *)product; | 
 |  | 
 | /*! | 
 |  Add a product impression to this hit. | 
 |  */ | 
 | - (GAIDictionaryBuilder *)addProductImpression:(GAIEcommerceProduct *)product | 
 |                                 impressionList:(NSString *)name | 
 |                                 impressionSource:(NSString *)source; | 
 |  | 
 | /*! | 
 |  Add a promotion to this hit. | 
 |  */ | 
 | - (GAIDictionaryBuilder *)addPromotion:(GAIEcommercePromotion *)promotion; | 
 | @end |