Consent tweaks.
Don't conditional Countly events on sendInfo, it already turns Countly on/off. Keep Sentry enabled for longer while turning on/off for sendInfo to cache more errors. Use sendInfoDecided event only for initial sendInfo prompt, can use Countly's censent tools to view overall opt-in/opt-outs.
This commit is contained in:
parent
c3568e4744
commit
61d1660560
@ -197,18 +197,16 @@ PearlAssociatedObjectProperty( NSMutableArray*, ProductObservers, productObserve
|
|||||||
forKey:transaction.payment.productIdentifier];
|
forKey:transaction.payment.productIdentifier];
|
||||||
[queue finishTransaction:transaction];
|
[queue finishTransaction:transaction];
|
||||||
|
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
SKProduct *product = self.products[transaction.payment.productIdentifier];
|
||||||
SKProduct *product = self.products[transaction.payment.productIdentifier];
|
[attributes addEntriesFromDictionary:@{
|
||||||
[attributes addEntriesFromDictionary:@{
|
@"id": product.productIdentifier,
|
||||||
@"id": product.productIdentifier,
|
@"name": product.localizedTitle,
|
||||||
@"name": product.localizedTitle,
|
@"price": product.price.description,
|
||||||
@"price": product.price.description,
|
@"currency": [product.priceLocale objectForKey:NSLocaleCurrencyCode],
|
||||||
@"currency": [product.priceLocale objectForKey:NSLocaleCurrencyCode],
|
@"state" : @"success",
|
||||||
@"state" : @"success",
|
@"quantity": @(transaction.payment.quantity).description,
|
||||||
@"quantity": @(transaction.payment.quantity).description,
|
}];
|
||||||
}];
|
[Countly.sharedInstance recordEvent:@"purchase" segmentation:attributes];
|
||||||
[Countly.sharedInstance recordEvent:@"purchase" segmentation:attributes];
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SKPaymentTransactionStateRestored: {
|
case SKPaymentTransactionStateRestored: {
|
||||||
@ -224,18 +222,16 @@ PearlAssociatedObjectProperty( NSMutableArray*, ProductObservers, productObserve
|
|||||||
MPError( transaction.error, @"Transaction failed: %@.", transaction.payment.productIdentifier );
|
MPError( transaction.error, @"Transaction failed: %@.", transaction.payment.productIdentifier );
|
||||||
[queue finishTransaction:transaction];
|
[queue finishTransaction:transaction];
|
||||||
|
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
SKProduct *product = self.products[transaction.payment.productIdentifier];
|
||||||
SKProduct *product = self.products[transaction.payment.productIdentifier];
|
[Countly.sharedInstance recordEvent:@"purchase" segmentation:@{
|
||||||
[Countly.sharedInstance recordEvent:@"purchase" segmentation:@{
|
@"id": product.productIdentifier,
|
||||||
@"id": product.productIdentifier,
|
@"name": product.localizedTitle,
|
||||||
@"name": product.localizedTitle,
|
@"price": product.price.description,
|
||||||
@"price": product.price.description,
|
@"currency": [product.priceLocale objectForKey:NSLocaleCurrencyCode],
|
||||||
@"currency": [product.priceLocale objectForKey:NSLocaleCurrencyCode],
|
@"state" : @"failed",
|
||||||
@"state" : @"failed",
|
@"quantity": @(transaction.payment.quantity).description,
|
||||||
@"quantity": @(transaction.payment.quantity).description,
|
@"reason" : [transaction.error localizedFailureReason]?: [transaction.error localizedDescription],
|
||||||
@"reason" : [transaction.error localizedFailureReason]?: [transaction.error localizedDescription],
|
}];
|
||||||
}];
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,13 +173,11 @@
|
|||||||
else
|
else
|
||||||
dbg( @"Automatic login failed for user: %@", user.userID );
|
dbg( @"Automatic login failed for user: %@", user.userID );
|
||||||
|
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
[Countly.sharedInstance recordEvent:@"login" segmentation:@{
|
||||||
[Countly.sharedInstance recordEvent:@"login" segmentation:@{
|
@"method" : password? @"Password": @"Automatic",
|
||||||
@"method" : password? @"Password": @"Automatic",
|
@"state" : @"failed",
|
||||||
@"state" : @"failed",
|
@"algorithm": @(user.algorithm.version).description,
|
||||||
@"algorithm": @(user.algorithm.version).description,
|
}];
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
@ -203,15 +201,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@try {
|
@try {
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
[Countly.sharedInstance userLoggedIn:user.userID];
|
||||||
[Countly.sharedInstance userLoggedIn:user.userID];
|
|
||||||
|
|
||||||
[Countly.sharedInstance recordEvent:@"login" segmentation:@{
|
[Countly.sharedInstance recordEvent:@"login" segmentation:@{
|
||||||
@"method" : password? @"Password": @"Automatic",
|
@"method" : password? @"Password": @"Automatic",
|
||||||
@"state" : @"success",
|
@"state" : @"success",
|
||||||
@"algorithm": @(user.algorithm.version).description,
|
@"algorithm": @(user.algorithm.version).description,
|
||||||
}];
|
}];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@catch (id exception) {
|
@catch (id exception) {
|
||||||
err( @"While setting username: %@", exception );
|
err( @"While setting username: %@", exception );
|
||||||
|
@ -119,8 +119,7 @@ static MPAppDelegate_Shared *instance;
|
|||||||
if (self.key)
|
if (self.key)
|
||||||
self.key = nil;
|
self.key = nil;
|
||||||
|
|
||||||
if ([[MPConfig get].sendInfo boolValue])
|
[Countly.sharedInstance userLoggedOut];
|
||||||
[Countly.sharedInstance userLoggedOut];
|
|
||||||
|
|
||||||
self.activeUserOID = activeUserOID;
|
self.activeUserOID = activeUserOID;
|
||||||
|
|
||||||
|
@ -408,14 +408,8 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (IBAction)togglePreference:(id)sender {
|
- (IBAction)togglePreference:(id)sender {
|
||||||
|
|
||||||
if (sender == self.diagnosticsItem) {
|
if (sender == self.diagnosticsItem)
|
||||||
BOOL sendInfo = self.diagnosticsItem.state != NSOnState;
|
[MPMacConfig get].sendInfo = @(self.diagnosticsItem.state != NSOnState);
|
||||||
[[Countly sharedInstance] recordEvent:@"sendInfoDecided" segmentation:@{
|
|
||||||
@"from": @"preferences",
|
|
||||||
@"sendInfo": [@(sendInfo) description],
|
|
||||||
}];
|
|
||||||
[MPMacConfig get].sendInfo = @(sendInfo);
|
|
||||||
}
|
|
||||||
if (sender == self.hidePasswordsItem)
|
if (sender == self.hidePasswordsItem)
|
||||||
[MPMacConfig get].hidePasswords = @(self.hidePasswordsItem.state != NSOnState);
|
[MPMacConfig get].hidePasswords = @(self.hidePasswordsItem.state != NSOnState);
|
||||||
if (sender == self.rememberPasswordItem)
|
if (sender == self.rememberPasswordItem)
|
||||||
@ -778,7 +772,6 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
CLYConsentSessions, CLYConsentEvents, CLYConsentUserDetails, CLYConsentCrashReporting, CLYConsentViewTracking, CLYConsentStarRating
|
CLYConsentSessions, CLYConsentEvents, CLYConsentUserDetails, CLYConsentCrashReporting, CLYConsentViewTracking, CLYConsentStarRating
|
||||||
];
|
];
|
||||||
if ([[MPMacConfig get].sendInfo boolValue]) {
|
if ([[MPMacConfig get].sendInfo boolValue]) {
|
||||||
[Countly.sharedInstance giveConsentForFeatures:countlyFeatures];
|
|
||||||
if ([PearlLogger get].printLevel > PearlLogLevelInfo)
|
if ([PearlLogger get].printLevel > PearlLogLevelInfo)
|
||||||
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
||||||
|
|
||||||
@ -796,10 +789,12 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
[scope setExtraValue:@([PearlDeviceUtils isAppEncrypted]) forKey:@"encrypted"];
|
[scope setExtraValue:@([PearlDeviceUtils isAppEncrypted]) forKey:@"encrypted"];
|
||||||
[scope setExtraValue:[PearlDeviceUtils platform] forKey:@"platform"];
|
[scope setExtraValue:[PearlDeviceUtils platform] forKey:@"platform"];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
[Countly.sharedInstance giveConsentForFeatures:countlyFeatures];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
|
||||||
[Countly.sharedInstance cancelConsentForFeatures:countlyFeatures];
|
[Countly.sharedInstance cancelConsentForFeatures:countlyFeatures];
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,6 @@
|
|||||||
[alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) {
|
[alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) {
|
||||||
BOOL sendInfo = returnCode != NSAlertSecondButtonReturn;
|
BOOL sendInfo = returnCode != NSAlertSecondButtonReturn;
|
||||||
[[Countly sharedInstance] recordEvent:@"sendInfoDecided" segmentation:@{
|
[[Countly sharedInstance] recordEvent:@"sendInfoDecided" segmentation:@{
|
||||||
@"from": @"initial",
|
|
||||||
@"sendInfo": [@(sendInfo) description],
|
@"sendInfo": [@(sendInfo) description],
|
||||||
}];
|
}];
|
||||||
[MPMacConfig get].sendInfo = @(sendInfo);
|
[MPMacConfig get].sendInfo = @(sendInfo);
|
||||||
|
@ -231,12 +231,10 @@ typedef NS_ENUM( NSUInteger, MPActiveUserState ) {
|
|||||||
user.avatar = newUserAvatar;
|
user.avatar = newUserAvatar;
|
||||||
user.name = newUserName;
|
user.name = newUserName;
|
||||||
|
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
[Countly.sharedInstance recordEvent:@"new-user" segmentation:@{
|
||||||
[Countly.sharedInstance recordEvent:@"new-user" segmentation:@{
|
@"algorithm": @(user.algorithm.version).description,
|
||||||
@"algorithm": @(user.algorithm.version).description,
|
@"avatar" : @(user.avatar).description,
|
||||||
@"avatar" : @(user.avatar).description,
|
}];
|
||||||
}];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL signedIn = [[MPiOSAppDelegate get] signInAsUser:user saveInContext:context
|
BOOL signedIn = [[MPiOSAppDelegate get] signInAsUser:user saveInContext:context
|
||||||
|
@ -646,7 +646,6 @@
|
|||||||
CLYConsentSessions, CLYConsentEvents, CLYConsentUserDetails, CLYConsentCrashReporting, CLYConsentViewTracking, CLYConsentStarRating
|
CLYConsentSessions, CLYConsentEvents, CLYConsentUserDetails, CLYConsentCrashReporting, CLYConsentViewTracking, CLYConsentStarRating
|
||||||
];
|
];
|
||||||
if ([[MPConfig get].sendInfo boolValue]) {
|
if ([[MPConfig get].sendInfo boolValue]) {
|
||||||
[Countly.sharedInstance giveConsentForFeatures:countlyFeatures];
|
|
||||||
if ([PearlLogger get].printLevel > PearlLogLevelInfo)
|
if ([PearlLogger get].printLevel > PearlLogLevelInfo)
|
||||||
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
||||||
|
|
||||||
@ -670,11 +669,13 @@
|
|||||||
#else
|
#else
|
||||||
[scope setExtraValue:@(NO) forKey:@"reviewedVersion"];
|
[scope setExtraValue:@(NO) forKey:@"reviewedVersion"];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
[Countly.sharedInstance giveConsentForFeatures:countlyFeatures];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
|
||||||
[Countly.sharedInstance cancelConsentForFeatures:countlyFeatures];
|
[Countly.sharedInstance cancelConsentForFeatures:countlyFeatures];
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user