Update analytics

Bucket product usage client side
Add app name and version to analytics
Move PayTextField's commonInit to private header
This commit is contained in:
Brian Dorfman 2017-05-03 11:58:08 -07:00
parent 8ab7eaa279
commit ac708b81d6
4 changed files with 59 additions and 7 deletions

View File

@ -671,6 +671,8 @@
F1D3A25C1EB014BD0095BFA9 /* UIImage+Stripe.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D3A2591EB014BD0095BFA9 /* UIImage+Stripe.m */; };
F1D3A25D1EB014BD0095BFA9 /* UIImage+Stripe.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D3A2591EB014BD0095BFA9 /* UIImage+Stripe.m */; };
F1D3A25F1EB015B30095BFA9 /* UIImage+StripeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D3A25E1EB015B30095BFA9 /* UIImage+StripeTests.m */; };
F1D3A2651EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D3A2631EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h */; };
F1D3A2661EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D3A2631EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h */; };
F1D64B291D8767FC001CDB7C /* STPWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D64B271D8767FC001CDB7C /* STPWebViewController.h */; };
F1D64B2A1D8767FC001CDB7C /* STPWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D64B271D8767FC001CDB7C /* STPWebViewController.h */; };
F1D64B2B1D8767FC001CDB7C /* STPWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D64B281D8767FC001CDB7C /* STPWebViewController.m */; };
@ -1141,6 +1143,7 @@
F1D3A2581EB014BD0095BFA9 /* UIImage+Stripe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Stripe.h"; sourceTree = "<group>"; };
F1D3A2591EB014BD0095BFA9 /* UIImage+Stripe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Stripe.m"; sourceTree = "<group>"; };
F1D3A25E1EB015B30095BFA9 /* UIImage+StripeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+StripeTests.m"; sourceTree = "<group>"; };
F1D3A2631EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "STPPaymentCardTextField+Private.h"; sourceTree = "<group>"; };
F1D64B271D8767FC001CDB7C /* STPWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STPWebViewController.h; sourceTree = "<group>"; };
F1D64B281D8767FC001CDB7C /* STPWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPWebViewController.m; sourceTree = "<group>"; };
F1D64B2D1D87686E001CDB7C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
@ -1716,6 +1719,7 @@
04BC29AC1CD9A88600318357 /* STPCheckoutAPIVerification.m */,
04BC29B31CD9AE0000318357 /* STPCheckoutBootstrapResponse.h */,
04BC29B41CD9AE0000318357 /* STPCheckoutBootstrapResponse.m */,
F1D3A2631EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h */,
04B31DD81D09A4DC00EF1631 /* STPPaymentConfiguration+Private.h */,
04E39F5A1CECFAFD00AF3B96 /* STPPaymentContext+Private.h */,
F12C8DBE1D63DE9F00ADA0D7 /* STPPaymentContextAmountModel.h */,
@ -1924,6 +1928,7 @@
04A488431CA3580700506E53 /* UINavigationController+Stripe_Completion.h in Headers */,
C124A1711CCA968B007D42EE /* STPAnalyticsClient.h in Headers */,
049A3FA81CC963EB00F57DE7 /* STPPaymentMethod.h in Headers */,
F1D3A2661EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h in Headers */,
F1DEB8911E2052150066B8E8 /* STPCoreScrollViewController.h in Headers */,
04F94DB51D229F74004FC826 /* STPSMSCodeTextField.h in Headers */,
C1363BB81D7633D800EB82B4 /* STPPaymentMethodTableViewCell.h in Headers */,
@ -2123,6 +2128,7 @@
049880FC1CED5A2300EA4FFD /* STPPaymentConfiguration.h in Headers */,
F1852F931D80B6EC00367C86 /* STPStringUtils.h in Headers */,
049A3FAE1CC9AA9900F57DE7 /* STPAddressViewModel.h in Headers */,
F1D3A2651EBA5BAE0095BFA9 /* STPPaymentCardTextField+Private.h in Headers */,
0426B96E1CEADC98006AC8DD /* STPColorUtils.h in Headers */,
04B31DDA1D09A4DC00EF1631 /* STPPaymentConfiguration+Private.h in Headers */,
F1D96F961DC7D82400477E64 /* STPLocalizationUtils.h in Headers */,

View File

@ -272,6 +272,4 @@
*/
@property(nonatomic, strong, readwrite, nonnull) STPCardParams *cardParams;
- (void)commonInit;
@end

View File

@ -8,6 +8,7 @@
#import "STPAnalyticsClient.h"
#import "NSBundle+Stripe_AppName.h"
#import "NSMutableURLRequest+Stripe.h"
#import "STPAPIClient+ApplePay.h"
#import "STPAPIClient.h"
@ -17,6 +18,7 @@
#import "STPCard.h"
#import "STPFormEncodable.h"
#import "STPPaymentCardTextField.h"
#import "STPPaymentCardTextField+Private.h"
#import "STPPaymentConfiguration.h"
#import "STPPaymentContext.h"
#import "STPPaymentMethodsViewController+Private.h"
@ -50,13 +52,18 @@
+ (void)initializeIfNeeded {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Individual views
[STPPaymentCardTextField stp_aspect_hookSelector:@selector(commonInit)
withOptions:STPAspectPositionAfter
usingBlock:^{
STPAnalyticsClient *client = [self sharedClient];
[client setApiUsage:[client.apiUsage setByAddingObject:NSStringFromClass([STPPaymentCardTextField class])]];
} error:nil];
// Pay context
[STPPaymentContext stp_aspect_hookSelector:@selector(initWithAPIAdapter:configuration:theme:)
withOptions:STPAspectPositionAfter
usingBlock:^{
@ -64,7 +71,9 @@
[client setApiUsage:[client.apiUsage setByAddingObject:NSStringFromClass([STPPaymentContext class])]];
} error:nil];
// View controllers
[STPAddCardViewController stp_aspect_hookSelector:@selector(commonInitWithConfiguration:)
withOptions:STPAspectPositionAfter
usingBlock:^{
@ -140,6 +149,29 @@
return productUsage ?: @[];
}
- (NSDictionary *)productUsageDictionary {
NSMutableDictionary *productUsage = [NSMutableDictionary new];
NSString *uiUsageLevel = nil;
if ([self.apiUsage containsObject:NSStringFromClass([STPPaymentContext class])]) {
uiUsageLevel = @"full";
}
else if (self.apiUsage.count == 1
&& [self.apiUsage containsObject:NSStringFromClass([STPPaymentCardTextField class])]) {
uiUsageLevel = @"card_text_field";
}
else if (self.apiUsage.count > 0) {
uiUsageLevel = @"partial";
}
else {
uiUsageLevel = @"none";
}
productUsage[@"ui_usage_level"] = uiUsageLevel;
productUsage[@"product_usage"] = [self productUsage];
return productUsage.copy;
}
- (void)logTokenCreationAttemptWithConfiguration:(STPPaymentConfiguration *)configuration
tokenType:(NSString *)tokenType {
NSDictionary *configurationDictionary = [self.class serializeConfiguration:configuration];
@ -147,9 +179,8 @@
[payload addEntriesFromDictionary:@{
@"event": @"stripeios.token_creation",
@"token_type": tokenType ?: @"unknown",
@"apple_pay_enabled": @([Stripe deviceSupportsApplePay]),
@"product_usage": [self productUsage],
}];
[payload addEntriesFromDictionary:[self productUsageDictionary]];
[payload addEntriesFromDictionary:configurationDictionary];
[self logPayload:payload];
}
@ -162,8 +193,8 @@
@"event": @"stripeios.source_creation",
@"source_type": sourceType ?: @"unknown",
@"apple_pay_enabled": @([Stripe deviceSupportsApplePay]),
@"product_usage": [self productUsage],
}];
[payload addEntriesFromDictionary:[self productUsageDictionary]];
[payload addEntriesFromDictionary:configurationDictionary];
[self logPayload:payload];
}
@ -212,6 +243,10 @@
if (deviceType) {
payload[@"device_type"] = deviceType;
}
payload[@"app_name"] = [NSBundle stp_applicationName];
payload[@"app_version"] = [NSBundle stp_applicationVersion];
payload[@"apple_pay_enabled"] = @([Stripe deviceSupportsApplePay]);
return payload;
}

View File

@ -0,0 +1,13 @@
//
// STPPaymentCardTextField+Private.h
// Stripe
//
// Created by Brian Dorfman on 5/3/17.
// Copyright © 2017 Stripe, Inc. All rights reserved.
//
#import <Stripe/Stripe.h>
@interface STPPaymentCardTextField (Private)
- (void)commonInit;
@end