[iOS] add new param for subscription validation error stats

This commit is contained in:
Aleksey Belouosv 2019-06-24 18:25:20 +03:00 committed by Roman Kuznetsov
parent b35d4e11fc
commit 5757d13b36
4 changed files with 34 additions and 20 deletions

View file

@ -6,7 +6,8 @@ typedef NS_ENUM(NSUInteger, MWMValidationResult)
{
MWMValidationResultValid,
MWMValidationResultNotValid,
MWMValidationResultError,
MWMValidationResultServerError,
MWMValidationResultAuthError
};
typedef void (^ValidateReceiptCallback)(NSString * serverId, MWMValidationResult validationResult);

View file

@ -107,6 +107,7 @@
[self serverError];
break;
}
GetFramework().GetPurchase()->SetValidationCallback(nullptr);
});
Purchase::ValidationInfo vi;
vi.m_receiptData = [receiptData base64EncodedStringWithOptions:0].UTF8String;
@ -149,13 +150,19 @@
- (void)serverError
{
if (self.callback)
self.callback(self.serverId, MWMValidationResultError);
self.callback(self.serverId, MWMValidationResultServerError);
}
- (void)authError
{
if (self.callback)
self.callback(self.serverId, MWMValidationResultAuthError);
}
- (void)appstoreError:(NSError *)error
{
if (self.callback)
self.callback(self.serverId, MWMValidationResultError);
self.callback(self.serverId, MWMValidationResultServerError);
}
- (void)setAdsDisabled:(BOOL)disabled

View file

@ -67,28 +67,33 @@ class SubscriptionManager: NSObject {
private func validate(_ refreshReceipt: Bool) {
MWMPurchaseManager.shared()
.validateReceipt(MWMPurchaseManager.adsRemovalServerId(),
refreshReceipt: refreshReceipt) { (serverId, validationResult) in
if validationResult == .error {
Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 2])
self.restorationCallback?(.error)
self.restorationCallback = nil
return
} else {
if validationResult == .valid {
Statistics.logEvent(kStatInappValidationSuccess)
Statistics.logEvent(kStatInappProductDelivered,
withParameters: [kStatVendor : MWMPurchaseManager.adsRemovalVendorId()])
} else {
Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 0])
}
refreshReceipt: refreshReceipt) { (_, validationResult) in
self.logEvents(validationResult)
if validationResult == .valid || validationResult == .notValid {
MWMPurchaseManager.shared().setAdsDisabled(validationResult == .valid)
self.paymentQueue.transactions
.filter { Subscription.productIds.contains($0.payment.productIdentifier) &&
($0.transactionState == .purchased || $0.transactionState == .restored) }
.forEach { self.paymentQueue.finishTransaction($0) }
self.restorationCallback?(validationResult)
self.restorationCallback = nil
}
self.restorationCallback?(validationResult)
self.restorationCallback = nil
}
}
private func logEvents(_ validationResult: MWMValidationResult) {
switch validationResult {
case .valid:
Statistics.logEvent(kStatInappValidationSuccess)
Statistics.logEvent(kStatInappProductDelivered,
withParameters: [kStatVendor : MWMPurchaseManager.adsRemovalVendorId()])
case .notValid:
Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 0])
case .serverError:
Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 2])
case .authError:
Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 1])
}
}
}

View file

@ -385,7 +385,8 @@ using namespace power_management;
case MWMValidationResultNotValid:
alertText = L(@"restore_no_subscription_alert");
break;
case MWMValidationResultError:
case MWMValidationResultServerError:
case MWMValidationResultAuthError:
alertText = L(@"restore_error_alert");
break;
}