From 2f51b5de363d6fbf9abd2cc842a59d4abb3f67e6 Mon Sep 17 00:00:00 2001 From: Pedro Date: Mon, 23 Feb 2015 15:59:44 +0100 Subject: [PATCH 01/13] Add criteo plugin --- example/example.xcodeproj/project.pbxproj | 8 ++ plugin/AdjustCriteo.h | 35 +++++ plugin/AdjustCriteo.m | 165 ++++++++++++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 plugin/AdjustCriteo.h create mode 100644 plugin/AdjustCriteo.m diff --git a/example/example.xcodeproj/project.pbxproj b/example/example.xcodeproj/project.pbxproj index 47ae34035..ee1507e9d 100644 --- a/example/example.xcodeproj/project.pbxproj +++ b/example/example.xcodeproj/project.pbxproj @@ -33,6 +33,8 @@ 960FCF8D1A1B9B7D00282BD4 /* ADJAttributionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 960FCF761A1B9B7D00282BD4 /* ADJAttributionHandler.m */; }; 960FCF8E1A1B9B7D00282BD4 /* ADJAttribution.m in Sources */ = {isa = PBXBuildFile; fileRef = 960FCF781A1B9B7D00282BD4 /* ADJAttribution.m */; }; 960FCF8F1A1B9B7D00282BD4 /* ADJConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 960FCF7A1A1B9B7D00282BD4 /* ADJConfig.m */; }; + 96332C8F1A891E1100D38FAF /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96332C8E1A891E1100D38FAF /* AdSupport.framework */; }; + 96332C911A891E1800D38FAF /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96332C901A891E1800D38FAF /* iAd.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -97,6 +99,8 @@ 960FCF781A1B9B7D00282BD4 /* ADJAttribution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJAttribution.m; sourceTree = ""; }; 960FCF791A1B9B7D00282BD4 /* ADJConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ADJConfig.h; sourceTree = ""; }; 960FCF7A1A1B9B7D00282BD4 /* ADJConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ADJConfig.m; sourceTree = ""; }; + 96332C8E1A891E1100D38FAF /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + 96332C901A891E1800D38FAF /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -104,6 +108,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 96332C911A891E1800D38FAF /* iAd.framework in Frameworks */, + 96332C8F1A891E1100D38FAF /* AdSupport.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -120,6 +126,8 @@ 960FCF171A1B9ACE00282BD4 = { isa = PBXGroup; children = ( + 96332C901A891E1800D38FAF /* iAd.framework */, + 96332C8E1A891E1100D38FAF /* AdSupport.framework */, 960FCF221A1B9ACE00282BD4 /* example */, 960FCF3C1A1B9ACE00282BD4 /* exampleTests */, 960FCF211A1B9ACE00282BD4 /* Products */, diff --git a/plugin/AdjustCriteo.h b/plugin/AdjustCriteo.h new file mode 100644 index 000000000..7b2efff5d --- /dev/null +++ b/plugin/AdjustCriteo.h @@ -0,0 +1,35 @@ +// +// AdjustCriteoEvents.h +// +// +// Created by Pedro Filipe on 06/02/15. +// +// + +#import +#import "ADJEvent.h" + +@interface CriteoProduct : NSObject + +@property (nonatomic, assign) float criteoPrice; +@property (nonatomic, assign) NSUInteger criteoQuantity; +@property (nonatomic, copy) NSString *criteoProductID; + +- (id) initWithPrice:(float)price + andQuantity:(NSUInteger)quantity + andProductId:(NSString*)productId; + ++ (CriteoProduct *)productWithPrice:(float)price + andQuantity:(NSUInteger)quantity + andProductId:(NSString*)productId; + +@end + +@interface AdjustCriteo : NSObject + ++ (void)injectDates:(ADJEvent *)event checkInDate:(NSString *)din checkOutDate:(NSString *)dout; ++ (void)injectProductListing:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products; ++ (void)injectProduct:(ADJEvent *)event customerId:(NSString *)customerId productId:(NSString *) productId; ++ (void)injectProductCart:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products; + +@end diff --git a/plugin/AdjustCriteo.m b/plugin/AdjustCriteo.m new file mode 100644 index 000000000..bfcec83ec --- /dev/null +++ b/plugin/AdjustCriteo.m @@ -0,0 +1,165 @@ +// +// AdjustCriteoEvents.m +// +// +// Created by Pedro Filipe on 06/02/15. +// +// + +#import "AdjustCriteo.h" +#import "Adjust.h" + +@implementation CriteoProduct + +- (id) initWithPrice:(float)price + andQuantity:(NSUInteger)quantity + andProductId:(NSString *)productId +{ + self = [super init]; + if (self == nil) return nil; + + self.criteoPrice = price; + self.criteoQuantity = quantity; + self.criteoProductID = productId; + + return self; +} + ++ (CriteoProduct *) productWithPrice:(float)price + andQuantity:(NSUInteger)quantity + andProductId:(NSString *)productId +{ + return [[CriteoProduct alloc] initWithPrice:price andQuantity:quantity andProductId:productId]; +} + +@end + +@implementation AdjustCriteo + + ++ (void)injectDates:(ADJEvent *)event checkInDate:(NSString *)din checkOutDate:(NSString *)dout +{ + [event addPartnerParameter:@"din" value:din]; + [event addPartnerParameter:@"dout" value:dout]; +} + + ++ (void)injectProductListing:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products +{ + [event addPartnerParameter:@"customer_id" value:customerId]; + + NSString * jsonProducts = [AdjustCriteo createCriteoVLFromProducts:products]; + [event addPartnerParameter:@"criteo_p" value:jsonProducts]; +} + ++ (void)injectProduct:(ADJEvent *)event customerId:(NSString *)customerId productId:(NSString *) productId +{ + [event addPartnerParameter:@"customer_id" value:customerId]; + [event addPartnerParameter:@"criteo_p" value:productId]; +} + ++ (void)injectProductCart:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products +{ + [event addPartnerParameter:@"customer_id" value:customerId]; + + NSString * jsonProducts = [AdjustCriteo createCriteoVBFromProducts:products]; + [event addPartnerParameter:@"criteo_p" value:jsonProducts]; +} + ++ (NSString*) createCriteoVBFromProducts:(NSArray*) products +{ + NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; + for (CriteoProduct *product in products) + { + NSString* productString = [NSString stringWithFormat:@"{\"i\":\"%@\",\"pr\":%f,\"q\":%lu}", + [product criteoProductID], + [product criteoPrice], + (unsigned long)[product criteoQuantity]]; + + [criteoVBValue appendString:productString]; + if (product != [products lastObject]) + { + [criteoVBValue appendString:@","]; + } + } + [criteoVBValue appendString:@"]"]; + return [criteoVBValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +} + ++ (NSString*) createCriteoVLFromProducts:(NSArray*) products +{ +#ifdef DEBUG + if ([products count] > 3) + NSLog(@"Warning : VL Events should only have at most 3 objects, discarding the rest"); +#endif + NSUInteger numberOfProducts = 0; + NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; + + for (CriteoProduct *product in products) + { + NSString* productString = [NSString stringWithFormat:@"\"%@\"", [product criteoProductID]]; + + [criteoVBValue appendString:productString]; + ++numberOfProducts; + + if (product != [products lastObject] && numberOfProducts < 3) + { + [criteoVBValue appendString:@","]; + } + if (numberOfProducts >= 3) + break; + } + [criteoVBValue appendString:@"]"]; + return [criteoVBValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +} + ++ (NSString*) createCriteoVBFromProductsDictionary:(NSArray*) products +{ + NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; + for (NSDictionary* product in products) + { + NSString* productString = [NSString stringWithFormat:@"{\"i\":\"%@\",\"pr\":%f,\"q\":%lu}", + [product objectForKey:@"productID"], + [[product objectForKey:@"price"] floatValue], + [[product objectForKey:@"quantity"] integerValue]]; + + [criteoVBValue appendString:productString]; + if (product != [products lastObject]) + { + [criteoVBValue appendString:@","]; + } + } + [criteoVBValue appendString:@"]"]; + return [criteoVBValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +} + ++ (NSString*) createCriteoVLFromProductsArray:(NSArray*) products +{ +#ifdef DEBUG + if ([products count] > 3) + NSLog(@"Warning : VL Events should only have at most 3 objects, discarding the rest"); +#endif + NSUInteger numberOfProducts = 0; + + NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; + for (NSString* product in products) + { + NSString* productString = [NSString stringWithFormat:@"\"%@\"", product]; + + [criteoVBValue appendString:productString]; + ++numberOfProducts; + + if (product != [products lastObject] && numberOfProducts < 3) + { + [criteoVBValue appendString:@","]; + } + if (numberOfProducts >= 3) + break; + + } + [criteoVBValue appendString:@"]"]; + return [criteoVBValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +} + + +@end From 1bc9a3cfffaa82e5319d51ae5df0f34ec891e440 Mon Sep 17 00:00:00 2001 From: Pedro Date: Mon, 23 Feb 2015 16:27:37 +0100 Subject: [PATCH 02/13] Rename function names --- plugin/AdjustCriteo.h | 23 +++++++++++++++++++---- plugin/AdjustCriteo.m | 27 ++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/plugin/AdjustCriteo.h b/plugin/AdjustCriteo.h index 7b2efff5d..7c7daeead 100644 --- a/plugin/AdjustCriteo.h +++ b/plugin/AdjustCriteo.h @@ -27,9 +27,24 @@ @interface AdjustCriteo : NSObject -+ (void)injectDates:(ADJEvent *)event checkInDate:(NSString *)din checkOutDate:(NSString *)dout; -+ (void)injectProductListing:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products; -+ (void)injectProduct:(ADJEvent *)event customerId:(NSString *)customerId productId:(NSString *) productId; -+ (void)injectProductCart:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products; ++ (void)injectViewSearchIntoEvent:(ADJEvent *)event + checkInDate:(NSString *)din + checkOutDate:(NSString *)dout; + ++ (void)injectViewListingIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId; + ++ (void)injectViewProductIntoEvent:(ADJEvent *)event + productId:(NSString *)productId + customerId:(NSString *)customerId; + ++ (void)injectCartIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId; + ++ (void)injectTransactionConfirmedIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId; @end diff --git a/plugin/AdjustCriteo.m b/plugin/AdjustCriteo.m index bfcec83ec..c835db224 100644 --- a/plugin/AdjustCriteo.m +++ b/plugin/AdjustCriteo.m @@ -37,14 +37,17 @@ + (CriteoProduct *) productWithPrice:(float)price @implementation AdjustCriteo -+ (void)injectDates:(ADJEvent *)event checkInDate:(NSString *)din checkOutDate:(NSString *)dout ++ (void)injectViewSearchIntoEvent:(ADJEvent *)event + checkInDate:(NSString *)din + checkOutDate:(NSString *)dout { [event addPartnerParameter:@"din" value:din]; [event addPartnerParameter:@"dout" value:dout]; } - -+ (void)injectProductListing:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products ++ (void)injectViewListingIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId { [event addPartnerParameter:@"customer_id" value:customerId]; @@ -52,13 +55,27 @@ + (void)injectProductListing:(ADJEvent *)event customerId:(NSString *)customerId [event addPartnerParameter:@"criteo_p" value:jsonProducts]; } -+ (void)injectProduct:(ADJEvent *)event customerId:(NSString *)customerId productId:(NSString *) productId ++ (void)injectViewProductIntoEvent:(ADJEvent *)event + productId:(NSString *)productId + customerId:(NSString *)customerId { [event addPartnerParameter:@"customer_id" value:customerId]; [event addPartnerParameter:@"criteo_p" value:productId]; } -+ (void)injectProductCart:(ADJEvent *)event customerId:(NSString *)customerId products:(NSArray *) products ++ (void)injectCartIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId +{ + [event addPartnerParameter:@"customer_id" value:customerId]; + + NSString * jsonProducts = [AdjustCriteo createCriteoVBFromProducts:products]; + [event addPartnerParameter:@"criteo_p" value:jsonProducts]; +} + ++ (void)injectTransactionConfirmedIntoEvent:(ADJEvent *)event + products:(NSArray *)products + customerId:(NSString *)customerId { [event addPartnerParameter:@"customer_id" value:customerId]; From b4fadfa21c6b5f7e7e568fa0c34962cf412da7b1 Mon Sep 17 00:00:00 2001 From: Pedro Filipe Date: Mon, 23 Feb 2015 18:42:10 +0100 Subject: [PATCH 03/13] Criteo doc --- doc/Criteo_plugin.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 doc/Criteo_plugin.md diff --git a/doc/Criteo_plugin.md b/doc/Criteo_plugin.md new file mode 100644 index 000000000..4be96503a --- /dev/null +++ b/doc/Criteo_plugin.md @@ -0,0 +1,65 @@ +## Criteo plugin + +Integrate adjust with Criteo events by following this steps: + +1. Locate the `plugin` folder inside the downloaded archive from our [releases page](https://github.com/adjust/ios_sdk/releases). + +2. Drag the `AdjustCriteo.h` and `AdjustCriteo.m` files into the `Adjust` folder inside your project. + +3. In the dialog `Choose options for adding these files` make sure to check the checkbox +to `Copy items if needed` and select the radio button to `Create groups`. + +Now you can integrate each of the different Criteo events, like in the following examples: + +- View Homepage +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; + +[Adjust trackEvent:event]; +``` +- View Search +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; + +[AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] + +[Adjust trackEvent:event]; +``` +- View Listing +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; + +CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; +CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; +CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + +NSArray * productList = @[product1, product2, product3]; + +[AdjustCriteo injectViewListingIntoEvent:event products:productList customerId:@"customerId_1"]; + +[Adjust trackEvent:event]; +``` +- View Product +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; + +[AdjustCriteo injectViewProductIntoEvent:event productId:@"productId_1" customerId:@"customerId_1"]; + +[Adjust trackEvent:event]; +``` +- Cart +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; + +[AdjustCriteo injectCartIntoEvent:event products:productList customerId:@"customerId_1"]; + +[Adjust trackEvent:event]; +``` +- Transaction confirmation +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; + +[AdjustCriteo injectTransactionConfirmedIntoEvent:event products:productList customerId:@"customerId_1"]; + +[Adjust trackEvent:event]; +``` From 3d36cb1dcd97088ce266f5816f1209dc54327231 Mon Sep 17 00:00:00 2001 From: Pedro Filipe Date: Mon, 23 Feb 2015 18:51:04 +0100 Subject: [PATCH 04/13] Update criteo doc --- doc/{Criteo_plugin.md => criteo_plugin.md} | 12 ++++++++++++ 1 file changed, 12 insertions(+) rename doc/{Criteo_plugin.md => criteo_plugin.md} (74%) diff --git a/doc/Criteo_plugin.md b/doc/criteo_plugin.md similarity index 74% rename from doc/Criteo_plugin.md rename to doc/criteo_plugin.md index 4be96503a..0548c1f31 100644 --- a/doc/Criteo_plugin.md +++ b/doc/criteo_plugin.md @@ -51,6 +51,12 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; +CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; +CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; +CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + +NSArray * productList = @[product1, product2, product3]; + [AdjustCriteo injectCartIntoEvent:event products:productList customerId:@"customerId_1"]; [Adjust trackEvent:event]; @@ -59,6 +65,12 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; +CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; +CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; +CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + +NSArray * productList = @[product1, product2, product3]; + [AdjustCriteo injectTransactionConfirmedIntoEvent:event products:productList customerId:@"customerId_1"]; [Adjust trackEvent:event]; From a276eff2b57ecbe3735eeb4538cfbb7e963730b9 Mon Sep 17 00:00:00 2001 From: Pedro Filipe Date: Mon, 23 Feb 2015 19:37:40 +0100 Subject: [PATCH 05/13] Indent criteo doc list --- doc/criteo_plugin.md | 113 ++++++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 51 deletions(-) diff --git a/doc/criteo_plugin.md b/doc/criteo_plugin.md index 0548c1f31..623a9da6a 100644 --- a/doc/criteo_plugin.md +++ b/doc/criteo_plugin.md @@ -12,66 +12,77 @@ to `Copy items if needed` and select the radio button to `Create groups`. Now you can integrate each of the different Criteo events, like in the following examples: - View Homepage -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; -[Adjust trackEvent:event]; -``` -- View Search -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; + + [Adjust trackEvent:event]; + ``` -[AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] +- View Search -[Adjust trackEvent:event]; -``` + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; + + [AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] + + [Adjust trackEvent:event]; + ``` + - View Listing -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; - -CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; -CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; -CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; -NSArray * productList = @[product1, product2, product3]; - -[AdjustCriteo injectViewListingIntoEvent:event products:productList customerId:@"customerId_1"]; - -[Adjust trackEvent:event]; -``` + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; + + CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; + CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; + CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + + NSArray * productList = @[product1, product2, product3]; + + [AdjustCriteo injectViewListingIntoEvent:event products:productList customerId:@"customerId_1"]; + + [Adjust trackEvent:event]; + ``` + - View Product -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; -[AdjustCriteo injectViewProductIntoEvent:event productId:@"productId_1" customerId:@"customerId_1"]; + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; + + [AdjustCriteo injectViewProductIntoEvent:event productId:@"productId_1" customerId:@"customerId_1"]; + + [Adjust trackEvent:event]; + ``` -[Adjust trackEvent:event]; -``` - Cart -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; - -CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; -CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; -CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; -NSArray * productList = @[product1, product2, product3]; - -[AdjustCriteo injectCartIntoEvent:event products:productList customerId:@"customerId_1"]; - -[Adjust trackEvent:event]; -``` + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; + + CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; + CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; + CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + + NSArray * productList = @[product1, product2, product3]; + + [AdjustCriteo injectCartIntoEvent:event products:productList customerId:@"customerId_1"]; + + [Adjust trackEvent:event]; + ``` + - Transaction confirmation -```objc -ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; - -CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; -CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; -CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; - -NSArray * productList = @[product1, product2, product3]; - -[AdjustCriteo injectTransactionConfirmedIntoEvent:event products:productList customerId:@"customerId_1"]; -[Adjust trackEvent:event]; -``` + ```objc + ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; + + CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; + CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; + CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; + + NSArray * productList = @[product1, product2, product3]; + + [AdjustCriteo injectTransactionConfirmedIntoEvent:event products:productList customerId:@"customerId_1"]; + + [Adjust trackEvent:event]; + ``` From 0535747b73852e91d92ad5f76dc89985a6631701 Mon Sep 17 00:00:00 2001 From: Pedro Date: Wed, 25 Feb 2015 14:50:03 +0100 Subject: [PATCH 06/13] Fix attribution description string --- Adjust/ADJAttribution.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Adjust/ADJAttribution.m b/Adjust/ADJAttribution.m index d82d59661..aaa58571f 100644 --- a/Adjust/ADJAttribution.m +++ b/Adjust/ADJAttribution.m @@ -92,7 +92,7 @@ - (NSDictionary *)dictionary { - (NSString *)description { return [NSString stringWithFormat:@"tt:%@ tn:%@ net:%@ cam:%@ adg:%@ cre:%@", self.trackerToken, self.trackerName, self.network, self.campaign, - self.adgroup, self.campaign]; + self.adgroup, self.creative]; } From 7b029db3e748c43ce044c0c8d60b203fa2086455 Mon Sep 17 00:00:00 2001 From: Christian Wellenbrock Date: Sat, 28 Feb 2015 13:10:49 +0100 Subject: [PATCH 07/13] Fix formatting in doc/criteo.md --- doc/criteo.md | 88 ++++++++++++++++++++++++++++++++++++++++++++ doc/criteo_plugin.md | 88 -------------------------------------------- 2 files changed, 88 insertions(+), 88 deletions(-) create mode 100644 doc/criteo.md delete mode 100644 doc/criteo_plugin.md diff --git a/doc/criteo.md b/doc/criteo.md new file mode 100644 index 000000000..d9adfd443 --- /dev/null +++ b/doc/criteo.md @@ -0,0 +1,88 @@ +## Criteo plugin + +Integrate adjust with Criteo events by following these steps: + +1. Locate the `plugin` folder inside the downloaded archive from our [releases page](https://github.com/adjust/ios_sdk/releases). + +2. Drag the `AdjustCriteo.h` and `AdjustCriteo.m` files into the `Adjust` folder inside your project. + +3. In the dialog `Choose options for adding these files` make sure to check the checkbox +to `Copy items if needed` and select the radio button to `Create groups`. + +Now you can integrate each of the different Criteo events, like in the following examples: + +### View Homepage + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; + +[Adjust trackEvent:event]; +``` + +### View Search + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; + +[AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] + +[Adjust trackEvent:event]; +``` + +### View Listing + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; + +CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; +CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; +CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; + +NSArray *products = @[product1, product2, product3]; + +[AdjustCriteo injectViewListingIntoEvent:event products:products customerId:@"customerId1"]; + +[Adjust trackEvent:event]; +``` + +### View Product + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; + +[AdjustCriteo injectViewProductIntoEvent:event productId:@"productId1" customerId:@"customerId1"]; + +[Adjust trackEvent:event]; +``` + +### Cart + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; + +CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; +CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; +CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; + +NSArray *products = @[product1, product2, product3]; + +[AdjustCriteo injectCartIntoEvent:event products:products customerId:@"customerId1"]; + +[Adjust trackEvent:event]; +``` + +### Transaction confirmation + +```objc +ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; + +CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; +CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; +CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; + +NSArray *products = @[product1, product2, product3]; + +[AdjustCriteo injectTransactionConfirmedIntoEvent:event products:products customerId:@"customerId1"]; + +[Adjust trackEvent:event]; +``` diff --git a/doc/criteo_plugin.md b/doc/criteo_plugin.md deleted file mode 100644 index 623a9da6a..000000000 --- a/doc/criteo_plugin.md +++ /dev/null @@ -1,88 +0,0 @@ -## Criteo plugin - -Integrate adjust with Criteo events by following this steps: - -1. Locate the `plugin` folder inside the downloaded archive from our [releases page](https://github.com/adjust/ios_sdk/releases). - -2. Drag the `AdjustCriteo.h` and `AdjustCriteo.m` files into the `Adjust` folder inside your project. - -3. In the dialog `Choose options for adding these files` make sure to check the checkbox -to `Copy items if needed` and select the radio button to `Create groups`. - -Now you can integrate each of the different Criteo events, like in the following examples: - -- View Homepage - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; - - [Adjust trackEvent:event]; - ``` - -- View Search - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; - - [AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] - - [Adjust trackEvent:event]; - ``` - -- View Listing - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; - - CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; - CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; - CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; - - NSArray * productList = @[product1, product2, product3]; - - [AdjustCriteo injectViewListingIntoEvent:event products:productList customerId:@"customerId_1"]; - - [Adjust trackEvent:event]; - ``` - -- View Product - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; - - [AdjustCriteo injectViewProductIntoEvent:event productId:@"productId_1" customerId:@"customerId_1"]; - - [Adjust trackEvent:event]; - ``` - -- Cart - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; - - CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; - CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; - CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; - - NSArray * productList = @[product1, product2, product3]; - - [AdjustCriteo injectCartIntoEvent:event products:productList customerId:@"customerId_1"]; - - [Adjust trackEvent:event]; - ``` - -- Transaction confirmation - - ```objc - ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; - - CriteoProduct * product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId_1"]; - CriteoProduct * product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId_2"]; - CriteoProduct * product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId_3"]; - - NSArray * productList = @[product1, product2, product3]; - - [AdjustCriteo injectTransactionConfirmedIntoEvent:event products:productList customerId:@"customerId_1"]; - - [Adjust trackEvent:event]; - ``` From 7fe051e11124c32b31a14a85b10970c57a87ff41 Mon Sep 17 00:00:00 2001 From: Christian Wellenbrock Date: Sat, 28 Feb 2015 13:21:09 +0100 Subject: [PATCH 08/13] Change argument order in CriteoProduct constructor --- doc/criteo.md | 18 +++++++++--------- plugin/AdjustCriteo.h | 14 +++++++------- plugin/AdjustCriteo.m | 25 ++++++++++++------------- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/doc/criteo.md b/doc/criteo.md index d9adfd443..3fa9883cf 100644 --- a/doc/criteo.md +++ b/doc/criteo.md @@ -34,9 +34,9 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; -CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; -CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; +CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; @@ -60,9 +60,9 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; -CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; -CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; +CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; @@ -76,9 +76,9 @@ NSArray *products = @[product1, product2, product3]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithPrice:100.0 andQuantity:1 andProductId:@"productId1"]; -CriteoProduct *product2 = [CriteoProduct productWithPrice:77.7 andQuantity:3 andProductId:@"productId2"]; -CriteoProduct *product3 = [CriteoProduct productWithPrice:50 andQuantity:2 andProductId:@"productId3"]; +CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; diff --git a/plugin/AdjustCriteo.h b/plugin/AdjustCriteo.h index 7c7daeead..90a7476e9 100644 --- a/plugin/AdjustCriteo.h +++ b/plugin/AdjustCriteo.h @@ -1,6 +1,6 @@ // // AdjustCriteoEvents.h -// +// // // Created by Pedro Filipe on 06/02/15. // @@ -15,13 +15,13 @@ @property (nonatomic, assign) NSUInteger criteoQuantity; @property (nonatomic, copy) NSString *criteoProductID; -- (id) initWithPrice:(float)price - andQuantity:(NSUInteger)quantity - andProductId:(NSString*)productId; +- (id) initWithId:(NSString*)productId + price:(float)price + quantity:(NSUInteger)quantity; -+ (CriteoProduct *)productWithPrice:(float)price - andQuantity:(NSUInteger)quantity - andProductId:(NSString*)productId; ++ (CriteoProduct *)productWithId:(NSString*)productId + price:(float)price + quantity:(NSUInteger)quantity; @end diff --git a/plugin/AdjustCriteo.m b/plugin/AdjustCriteo.m index c835db224..0aced0be1 100644 --- a/plugin/AdjustCriteo.m +++ b/plugin/AdjustCriteo.m @@ -1,6 +1,6 @@ // // AdjustCriteoEvents.m -// +// // // Created by Pedro Filipe on 06/02/15. // @@ -11,25 +11,25 @@ @implementation CriteoProduct -- (id) initWithPrice:(float)price - andQuantity:(NSUInteger)quantity - andProductId:(NSString *)productId +- (id) initWithId:(NSString *)productId + price:(float)price + quantity:(NSUInteger)quantity { self = [super init]; if (self == nil) return nil; + self.criteoProductID = productId; self.criteoPrice = price; self.criteoQuantity = quantity; - self.criteoProductID = productId; return self; } -+ (CriteoProduct *) productWithPrice:(float)price - andQuantity:(NSUInteger)quantity - andProductId:(NSString *)productId ++ (CriteoProduct *) productWithId:(NSString *)productId + price:(float)price + quantity:(NSUInteger)quantity { - return [[CriteoProduct alloc] initWithPrice:price andQuantity:quantity andProductId:productId]; + return [[CriteoProduct alloc] initWithId:productId price:price quantity:quantity]; } @end @@ -162,21 +162,20 @@ + (NSString*) createCriteoVLFromProductsArray:(NSArray*) products for (NSString* product in products) { NSString* productString = [NSString stringWithFormat:@"\"%@\"", product]; - + [criteoVBValue appendString:productString]; ++numberOfProducts; - + if (product != [products lastObject] && numberOfProducts < 3) { [criteoVBValue appendString:@","]; } if (numberOfProducts >= 3) break; - + } [criteoVBValue appendString:@"]"]; return [criteoVBValue stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } - @end From a8ab7f23dcf421229306391b445acddd163d3c99 Mon Sep 17 00:00:00 2001 From: Christian Wellenbrock Date: Sat, 28 Feb 2015 13:23:32 +0100 Subject: [PATCH 09/13] Rename AdjustCriteo to ADJCriteo --- doc/criteo.md | 12 ++++++------ plugin/{AdjustCriteo.h => ADJCriteo.h} | 4 ++-- plugin/{AdjustCriteo.m => ADJCriteo.m} | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) rename plugin/{AdjustCriteo.h => ADJCriteo.h} (95%) rename plugin/{AdjustCriteo.m => ADJCriteo.m} (94%) diff --git a/doc/criteo.md b/doc/criteo.md index 3fa9883cf..ae63e6cb5 100644 --- a/doc/criteo.md +++ b/doc/criteo.md @@ -4,7 +4,7 @@ Integrate adjust with Criteo events by following these steps: 1. Locate the `plugin` folder inside the downloaded archive from our [releases page](https://github.com/adjust/ios_sdk/releases). -2. Drag the `AdjustCriteo.h` and `AdjustCriteo.m` files into the `Adjust` folder inside your project. +2. Drag the `ADJCriteo.h` and `ADJCriteo.m` files into the `Adjust` folder inside your project. 3. In the dialog `Choose options for adding these files` make sure to check the checkbox to `Copy items if needed` and select the radio button to `Create groups`. @@ -24,7 +24,7 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; -[AdjustCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] +[ADJCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] [Adjust trackEvent:event]; ``` @@ -40,7 +40,7 @@ CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 qu NSArray *products = @[product1, product2, product3]; -[AdjustCriteo injectViewListingIntoEvent:event products:products customerId:@"customerId1"]; +[ADJCriteo injectViewListingIntoEvent:event products:products customerId:@"customerId1"]; [Adjust trackEvent:event]; ``` @@ -50,7 +50,7 @@ NSArray *products = @[product1, product2, product3]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; -[AdjustCriteo injectViewProductIntoEvent:event productId:@"productId1" customerId:@"customerId1"]; +[ADJCriteo injectViewProductIntoEvent:event productId:@"productId1" customerId:@"customerId1"]; [Adjust trackEvent:event]; ``` @@ -66,7 +66,7 @@ CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 qu NSArray *products = @[product1, product2, product3]; -[AdjustCriteo injectCartIntoEvent:event products:products customerId:@"customerId1"]; +[ADJCriteo injectCartIntoEvent:event products:products customerId:@"customerId1"]; [Adjust trackEvent:event]; ``` @@ -82,7 +82,7 @@ CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 qu NSArray *products = @[product1, product2, product3]; -[AdjustCriteo injectTransactionConfirmedIntoEvent:event products:products customerId:@"customerId1"]; +[ADJCriteo injectTransactionConfirmedIntoEvent:event products:products customerId:@"customerId1"]; [Adjust trackEvent:event]; ``` diff --git a/plugin/AdjustCriteo.h b/plugin/ADJCriteo.h similarity index 95% rename from plugin/AdjustCriteo.h rename to plugin/ADJCriteo.h index 90a7476e9..0ee1cb180 100644 --- a/plugin/AdjustCriteo.h +++ b/plugin/ADJCriteo.h @@ -1,5 +1,5 @@ // -// AdjustCriteoEvents.h +// ADJCriteoEvents.h // // // Created by Pedro Filipe on 06/02/15. @@ -25,7 +25,7 @@ @end -@interface AdjustCriteo : NSObject +@interface ADJCriteo : NSObject + (void)injectViewSearchIntoEvent:(ADJEvent *)event checkInDate:(NSString *)din diff --git a/plugin/AdjustCriteo.m b/plugin/ADJCriteo.m similarity index 94% rename from plugin/AdjustCriteo.m rename to plugin/ADJCriteo.m index 0aced0be1..350949ffb 100644 --- a/plugin/AdjustCriteo.m +++ b/plugin/ADJCriteo.m @@ -1,12 +1,12 @@ // -// AdjustCriteoEvents.m +// ADJCriteoEvents.m // // // Created by Pedro Filipe on 06/02/15. // // -#import "AdjustCriteo.h" +#import "ADJCriteo.h" #import "Adjust.h" @implementation CriteoProduct @@ -34,7 +34,7 @@ + (CriteoProduct *) productWithId:(NSString *)productId @end -@implementation AdjustCriteo +@implementation ADJCriteo + (void)injectViewSearchIntoEvent:(ADJEvent *)event @@ -51,7 +51,7 @@ + (void)injectViewListingIntoEvent:(ADJEvent *)event { [event addPartnerParameter:@"customer_id" value:customerId]; - NSString * jsonProducts = [AdjustCriteo createCriteoVLFromProducts:products]; + NSString * jsonProducts = [ADJCriteo createCriteoVLFromProducts:products]; [event addPartnerParameter:@"criteo_p" value:jsonProducts]; } @@ -69,7 +69,7 @@ + (void)injectCartIntoEvent:(ADJEvent *)event { [event addPartnerParameter:@"customer_id" value:customerId]; - NSString * jsonProducts = [AdjustCriteo createCriteoVBFromProducts:products]; + NSString * jsonProducts = [ADJCriteo createCriteoVBFromProducts:products]; [event addPartnerParameter:@"criteo_p" value:jsonProducts]; } @@ -79,7 +79,7 @@ + (void)injectTransactionConfirmedIntoEvent:(ADJEvent *)event { [event addPartnerParameter:@"customer_id" value:customerId]; - NSString * jsonProducts = [AdjustCriteo createCriteoVBFromProducts:products]; + NSString * jsonProducts = [ADJCriteo createCriteoVBFromProducts:products]; [event addPartnerParameter:@"criteo_p" value:jsonProducts]; } From 793b5b81594a7772ac01b416e1f3b379320035aa Mon Sep 17 00:00:00 2001 From: Christian Wellenbrock Date: Sat, 28 Feb 2015 13:25:23 +0100 Subject: [PATCH 10/13] Rename CriteoProduct to ADJCriteoProduct --- doc/criteo.md | 18 +++++++++--------- plugin/ADJCriteo.h | 4 ++-- plugin/ADJCriteo.m | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/criteo.md b/doc/criteo.md index ae63e6cb5..cce3d0904 100644 --- a/doc/criteo.md +++ b/doc/criteo.md @@ -34,9 +34,9 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; -CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; -CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; +ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; @@ -60,9 +60,9 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; -CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; -CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; +ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; @@ -76,9 +76,9 @@ NSArray *products = @[product1, product2, product3]; ```objc ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; -CriteoProduct *product1 = [CriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; -CriteoProduct *product2 = [CriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; -CriteoProduct *product3 = [CriteoProduct productWithId:@"productId3" price:50 quantity:2]; +ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; +ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; +ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; NSArray *products = @[product1, product2, product3]; diff --git a/plugin/ADJCriteo.h b/plugin/ADJCriteo.h index 0ee1cb180..cbe31333c 100644 --- a/plugin/ADJCriteo.h +++ b/plugin/ADJCriteo.h @@ -9,7 +9,7 @@ #import #import "ADJEvent.h" -@interface CriteoProduct : NSObject +@interface ADJCriteoProduct : NSObject @property (nonatomic, assign) float criteoPrice; @property (nonatomic, assign) NSUInteger criteoQuantity; @@ -19,7 +19,7 @@ price:(float)price quantity:(NSUInteger)quantity; -+ (CriteoProduct *)productWithId:(NSString*)productId ++ (ADJCriteoProduct *)productWithId:(NSString*)productId price:(float)price quantity:(NSUInteger)quantity; diff --git a/plugin/ADJCriteo.m b/plugin/ADJCriteo.m index 350949ffb..1c2e89e7b 100644 --- a/plugin/ADJCriteo.m +++ b/plugin/ADJCriteo.m @@ -9,7 +9,7 @@ #import "ADJCriteo.h" #import "Adjust.h" -@implementation CriteoProduct +@implementation ADJCriteoProduct - (id) initWithId:(NSString *)productId price:(float)price @@ -25,11 +25,11 @@ - (id) initWithId:(NSString *)productId return self; } -+ (CriteoProduct *) productWithId:(NSString *)productId ++ (ADJCriteoProduct *) productWithId:(NSString *)productId price:(float)price quantity:(NSUInteger)quantity { - return [[CriteoProduct alloc] initWithId:productId price:price quantity:quantity]; + return [[ADJCriteoProduct alloc] initWithId:productId price:price quantity:quantity]; } @end @@ -86,7 +86,7 @@ + (void)injectTransactionConfirmedIntoEvent:(ADJEvent *)event + (NSString*) createCriteoVBFromProducts:(NSArray*) products { NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; - for (CriteoProduct *product in products) + for (ADJCriteoProduct *product in products) { NSString* productString = [NSString stringWithFormat:@"{\"i\":\"%@\",\"pr\":%f,\"q\":%lu}", [product criteoProductID], @@ -112,7 +112,7 @@ + (NSString*) createCriteoVLFromProducts:(NSArray*) products NSUInteger numberOfProducts = 0; NSMutableString* criteoVBValue = [NSMutableString stringWithString:@"["]; - for (CriteoProduct *product in products) + for (ADJCriteoProduct *product in products) { NSString* productString = [NSString stringWithFormat:@"\"%@\"", [product criteoProductID]]; From e531002e6434fbf2c9413895f1a4f72aecff7696 Mon Sep 17 00:00:00 2001 From: Christian Wellenbrock Date: Sat, 28 Feb 2015 13:34:22 +0100 Subject: [PATCH 11/13] Add import statements to examples in criteo doc --- doc/criteo.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/criteo.md b/doc/criteo.md index cce3d0904..1625f58e7 100644 --- a/doc/criteo.md +++ b/doc/criteo.md @@ -22,9 +22,11 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewHomepageEventToken}"]; ### View Search ```objc +#import "ADJCriteo.h" + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; -[ADJCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"] +[ADJCriteo injectViewSearchIntoEvent:event checkInDate:@"2015-01-01" checkOutDate:@"2015-01-07"]; [Adjust trackEvent:event]; ``` @@ -32,12 +34,13 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewSearchEventToken}"]; ### View Listing ```objc +#import "ADJCriteo.h" + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewListingEventToken}"]; ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; - NSArray *products = @[product1, product2, product3]; [ADJCriteo injectViewListingIntoEvent:event products:products customerId:@"customerId1"]; @@ -48,6 +51,8 @@ NSArray *products = @[product1, product2, product3]; ### View Product ```objc +#import "ADJCriteo.h" + ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; [ADJCriteo injectViewProductIntoEvent:event productId:@"productId1" customerId:@"customerId1"]; @@ -58,12 +63,13 @@ ADJEvent *event = [ADJEvent eventWithEventToken:@"{viewProductEventToken}"]; ### Cart ```objc +#import "ADJCriteo.h" + ADJEvent *event = [ADJEvent eventWithEventToken:@"{cartEventToken}"]; ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; - NSArray *products = @[product1, product2, product3]; [ADJCriteo injectCartIntoEvent:event products:products customerId:@"customerId1"]; @@ -74,12 +80,13 @@ NSArray *products = @[product1, product2, product3]; ### Transaction confirmation ```objc +#import "ADJCriteo.h" + ADJEvent *event = [ADJEvent eventWithEventToken:@"{transactionConfirmedEventToken}"]; ADJCriteoProduct *product1 = [ADJCriteoProduct productWithId:@"productId1" price:100.0 quantity:1]; ADJCriteoProduct *product2 = [ADJCriteoProduct productWithId:@"productId2" price:77.7 quantity:3]; ADJCriteoProduct *product3 = [ADJCriteoProduct productWithId:@"productId3" price:50 quantity:2]; - NSArray *products = @[product1, product2, product3]; [ADJCriteo injectTransactionConfirmedIntoEvent:event products:products customerId:@"customerId1"]; From 55991926f1dba9b8687dce763249ce741566390c Mon Sep 17 00:00:00 2001 From: Pedro Date: Mon, 2 Mar 2015 11:40:22 +0100 Subject: [PATCH 12/13] New version v4.0.7 --- Adjust.podspec | 4 ++-- Adjust/ADJUtil.m | 2 +- AdjustTests/ADJActivityHandlerTests.m | 2 +- README.md | 2 +- VERSION | 2 +- doc/migrate.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Adjust.podspec b/Adjust.podspec index e6f4ab7c2..8d6c583f0 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = "Adjust" - s.version = "4.0.6" + s.version = "4.0.7" s.summary = "This is the iOS SDK of adjust. You can read more about it at http://adjust.com." s.homepage = "http://adjust.com" s.license = { :type => 'MIT', :file => 'MIT-LICENSE' } s.author = { "Christian Wellenbrock" => "welle@adjust.com" } - s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.0.6" } + s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.0.7" } s.platform = :ios, '4.3' s.framework = 'SystemConfiguration' s.weak_framework = 'AdSupport', 'iAd' diff --git a/Adjust/ADJUtil.m b/Adjust/ADJUtil.m index fd62fa402..40fe851ac 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/ADJUtil.m @@ -16,7 +16,7 @@ #include static NSString * const kBaseUrl = @"https://app.adjust.com"; -static NSString * const kClientSdk = @"ios4.0.6"; +static NSString * const kClientSdk = @"ios4.0.7"; static NSString * const kDateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z"; static NSDateFormatter *dateFormat; diff --git a/AdjustTests/ADJActivityHandlerTests.m b/AdjustTests/ADJActivityHandlerTests.m index aea491bfa..e962b4e09 100644 --- a/AdjustTests/ADJActivityHandlerTests.m +++ b/AdjustTests/ADJActivityHandlerTests.m @@ -121,7 +121,7 @@ - (void)testFirstRun ADJActivityPackage *activityPackage = (ADJActivityPackage *) self.packageHandlerMock.packageQueue[0]; // check the Sdk version is being tested - XCTAssertEqual(@"ios4.0.6", activityPackage.clientSdk, @"%@", activityPackage.extendedString); + XCTAssertEqual(@"ios4.0.7", activityPackage.clientSdk, @"%@", activityPackage.extendedString); // check the server url XCTAssertEqual(@"https://app.adjust.com", ADJUtil.baseUrl); diff --git a/README.md b/README.md index 5cb80e237..66ec14665 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ If you're using [CocoaPods][cocoapods], you can add the following line to your `Podfile` and continue with [step 3](#step3): ```ruby -pod 'Adjust', :git => 'git://github.com/adjust/ios_sdk.git', :tag => 'v4.0.6' +pod 'Adjust', :git => 'git://github.com/adjust/ios_sdk.git', :tag => 'v4.0.7' ``` ### 1. Get the SDK diff --git a/VERSION b/VERSION index d13e837c8..43beb4001 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.0.6 +4.0.7 diff --git a/doc/migrate.md b/doc/migrate.md index ce41a878a..6c070ec1e 100644 --- a/doc/migrate.md +++ b/doc/migrate.md @@ -1,4 +1,4 @@ -## Migrate your adjust SDK for iOS to v4.0.6 from v3.4.0 +## Migrate your adjust SDK for iOS to v4.0.7 from v3.4.0 ### Initial setup From 70edd60b74fc3bba4eace44aaaa1a54cb3b8aa94 Mon Sep 17 00:00:00 2001 From: Pedro Date: Mon, 2 Mar 2015 11:55:18 +0100 Subject: [PATCH 13/13] Fix attribution test logs --- AdjustTests/ADJActivityHandlerTests.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/AdjustTests/ADJActivityHandlerTests.m b/AdjustTests/ADJActivityHandlerTests.m index e962b4e09..f82a3b7cb 100644 --- a/AdjustTests/ADJActivityHandlerTests.m +++ b/AdjustTests/ADJActivityHandlerTests.m @@ -1069,7 +1069,7 @@ - (void)testAttribution { // check the first attribution is written XCTAssert([self.loggerMock containsMessage:ADJLogLevelDebug - beginsWith:@"Wrote Attribution: tt:trackerTokenValue tn:trackerNameValue net:networkValue cam:campaignValue adg:adgroupValue cre:campaignValue"], @"%@", self.loggerMock); + beginsWith:@"Wrote Attribution: tt:trackerTokenValue tn:trackerNameValue net:networkValue cam:campaignValue adg:adgroupValue cre:creativeValue"], @"%@", self.loggerMock); // change values of the same attribution attribution.trackerName = @"trackerNameValueNew"; @@ -1087,7 +1087,7 @@ - (void)testAttribution { // check the second attribution is written XCTAssert([self.loggerMock containsMessage:ADJLogLevelDebug - beginsWith:@"Wrote Attribution: tt:trackerTokenValueNew tn:trackerNameValueNew net:networkValueNew cam:campaignValueNew adg:adgroupValueNew cre:campaignValueNew"], @"%@", self.loggerMock); + beginsWith:@"Wrote Attribution: tt:trackerTokenValueNew tn:trackerNameValueNew net:networkValueNew cam:campaignValueNew adg:adgroupValueNew cre:creativeValueNew"], @"%@", self.loggerMock); // build a json dictionary equal to the updated Attribution NSMutableDictionary * newJsonDictionary = [[NSMutableDictionary alloc] init]; @@ -1107,7 +1107,7 @@ - (void)testAttribution { // check the same attribution is not written again XCTAssertFalse([self.loggerMock containsMessage:ADJLogLevelDebug - beginsWith:@"Wrote Attribution: tt:trackerTokenValueNew tn:trackerNameValueNew net:networkValueNew cam:campaignValueNew adg:adgroupValueNew cre:campaignValueNew"], @"%@", self.loggerMock); + beginsWith:@"Wrote Attribution: tt:trackerTokenValueNew tn:trackerNameValueNew net:networkValueNew cam:campaignValueNew adg:adgroupValueNew cre:creativeValueNew"], @"%@", self.loggerMock); [activityHandler setAskingAttribution:NO]; @@ -1158,7 +1158,7 @@ - (void)testAttribution { // check new attribution after restart XCTAssert([self.loggerMock containsMessage:ADJLogLevelDebug - beginsWith:@"Wrote Attribution: tt:trackerTokenValue tn:trackerNameValue net:networkValue cam:campaignValue adg:adgroupValue cre:campaignValue"], @"%@", self.loggerMock); + beginsWith:@"Wrote Attribution: tt:trackerTokenValue tn:trackerNameValue net:networkValue cam:campaignValue adg:adgroupValue cre:creativeValue"], @"%@", self.loggerMock); [newActivityHandler setAskingAttribution:YES];