forked from organicmaps/organicmaps
[iOS] add new param for subscription validation error stats
This commit is contained in:
parent
b35d4e11fc
commit
5757d13b36
4 changed files with 34 additions and 20 deletions
|
@ -6,7 +6,8 @@ typedef NS_ENUM(NSUInteger, MWMValidationResult)
|
|||
{
|
||||
MWMValidationResultValid,
|
||||
MWMValidationResultNotValid,
|
||||
MWMValidationResultError,
|
||||
MWMValidationResultServerError,
|
||||
MWMValidationResultAuthError
|
||||
};
|
||||
|
||||
typedef void (^ValidateReceiptCallback)(NSString * serverId, MWMValidationResult validationResult);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue