From b26c83eaaddfec900403f4b195f877e134611861 Mon Sep 17 00:00:00 2001 From: Ladan Nasserian Date: Thu, 19 Oct 2017 11:37:55 -0700 Subject: [PATCH] Moves loveRevenueV2 logic into trackLogRevenueV2 method (#39) --- Pod/Classes/SEGAmplitudeIntegration.m | 77 ++++++++++++++------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/Pod/Classes/SEGAmplitudeIntegration.m b/Pod/Classes/SEGAmplitudeIntegration.m index 20a7aa6..2ee05f5 100644 --- a/Pod/Classes/SEGAmplitudeIntegration.m +++ b/Pod/Classes/SEGAmplitudeIntegration.m @@ -42,7 +42,6 @@ + (NSNumber *)extractRevenueOrTotal:(NSDictionary *)dictionary withRevenueKey:(N if ([key caseInsensitiveCompare:totalKey] == NSOrderedSame) { revenueOrTotal = dictionary[key]; - break; } } @@ -96,43 +95,9 @@ - (void)realTrack:(NSString *)event properties:(NSDictionary *)properties integr - (void)trackRevenue:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)revenueOrTotal { - // Use logRevenueV2 with revenue properties. + // Use logRevenueV2 with revenue properties. if ([(NSNumber *)[self.settings objectForKey:@"useLogRevenueV2"] boolValue]) { - id price = [properties objectForKey:@"price"]; - id quantity = [properties objectForKey:@"quantity"]; - - // if no price fallback to using revenue - if (!price || ![price isKindOfClass:[NSNumber class]]) { - price = revenueOrTotal; - quantity = [NSNumber numberWithInt:1]; - } else if (!quantity || ![quantity isKindOfClass:[NSNumber class]]) { - quantity = [NSNumber numberWithInt:1]; - } - - [[self.amprevenue setPrice:price] setQuantity:[quantity integerValue]]; - SEGLog(@"[[AMPRevenue revenue] setPrice:%@] setQuantity: %d];", price, [quantity integerValue]); - - id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"]; - if (productId && [productId isKindOfClass:[NSString class]] && ![productId isEqualToString:@""]) { - [self.amprevenue setProductIdentifier:productId]; - SEGLog(@"[[AMPRevenue revenue] setProductIdentifier:%@];", productId); - } - - //Receipt is meant to be of type NSData - id receipt = [properties objectForKey:@"receipt"]; - if (receipt && [receipt isKindOfClass:[NSString class]] && ![receipt isEqualToString:@""]) { - [self.amprevenue setReceipt:receipt]; - SEGLog(@"[[AMPRevenue revenue] setReceipt:%@];", receipt); - } - id revenueType = [properties objectForKey:@"revenueType"] ?: [properties objectForKey:@"revenue_type"]; - if (revenueType && [revenueType isKindOfClass:[NSString class]] && ![revenueType isEqualToString:@""]) { - [self.amprevenue setRevenueType:revenueType]; - SEGLog(@"[AMPRevenue revenue] setRevenueType:%@];", revenueType); - } - NSLog(@"Price : %@, Quantity : %@", price, quantity); - [self.amplitude logRevenueV2:self.amprevenue]; - SEGLog(@"[Amplitude logRevenueV2:%@];", self.amprevenue); - + [self trackLogRevenueV2:properties andRevenueOrTotal:revenueOrTotal]; } else { // fallback to logRevenue v1 id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"]; @@ -155,6 +120,44 @@ - (void)trackRevenue:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)re } } +- (void)trackLogRevenueV2:(NSDictionary *)properties andRevenueOrTotal:(NSNumber *)revenueOrTotal +{ + id price = [properties objectForKey:@"price"]; + id quantity = [properties objectForKey:@"quantity"]; + + // if no price fallback to using revenue + if (!price || ![price isKindOfClass:[NSNumber class]]) { + price = revenueOrTotal; + quantity = [NSNumber numberWithInt:1]; + } else if (!quantity || ![quantity isKindOfClass:[NSNumber class]]) { + quantity = [NSNumber numberWithInt:1]; + } + + [[self.amprevenue setPrice:price] setQuantity:[quantity integerValue]]; + SEGLog(@"[[AMPRevenue revenue] setPrice:%@] setQuantity: %d];", price, [quantity integerValue]); + + id productId = [properties objectForKey:@"productId"] ?: [properties objectForKey:@"product_id"]; + if (productId && [productId isKindOfClass:[NSString class]] && ![productId isEqualToString:@""]) { + [self.amprevenue setProductIdentifier:productId]; + SEGLog(@"[[AMPRevenue revenue] setProductIdentifier:%@];", productId); + } + + //Receipt is meant to be of type NSData + id receipt = [properties objectForKey:@"receipt"]; + if (receipt && [receipt isKindOfClass:[NSString class]] && ![receipt isEqualToString:@""]) { + [self.amprevenue setReceipt:receipt]; + SEGLog(@"[[AMPRevenue revenue] setReceipt:%@];", receipt); + } + id revenueType = [properties objectForKey:@"revenueType"] ?: [properties objectForKey:@"revenue_type"]; + if (revenueType && [revenueType isKindOfClass:[NSString class]] && ![revenueType isEqualToString:@""]) { + [self.amprevenue setRevenueType:revenueType]; + SEGLog(@"[AMPRevenue revenue] setRevenueType:%@];", revenueType); + } + NSLog(@"Price : %@, Quantity : %@", price, quantity); + [self.amplitude logRevenueV2:self.amprevenue]; + SEGLog(@"[Amplitude logRevenueV2:%@];", self.amprevenue); +} + - (void)track:(SEGTrackPayload *)payload { [self realTrack:payload.event properties:payload.properties integrations:payload.integrations];