feat: Add server request to register in-app purchase
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/29
This commit is contained in:
@@ -35,6 +35,8 @@ static NSString * const EQNServerUrlDownloadRetiSismiche = @"https://srv.earthqu
|
||||
static NSString * const EQNServerUrlOfferTimeRemaining = @"https://srv.earthquakenetwork.it/distquake_download_offer_time_remaining.php";
|
||||
/// Recupera il numero di sottoscrizioni ancora disponibili per ogni prodotto
|
||||
static NSString * const EQNServerUrlAvailableSubscriptionsCounter = @"https://srv.earthquakenetwork.it/distquake_count_top_redis.php";
|
||||
/// Registra l'abbonamento acquistato dall'utente
|
||||
static NSString * const EQNServerUrlRegisterSubscription = @"https://srv.earthquakenetwork.it/distquake_upload_subscription.php";
|
||||
/// Carica le impostazioni delle notifiche definite dall'utente
|
||||
static NSString * const EQNServerUrlUploadSettings = @"https://srv.earthquakenetwork.it/distquake_upload_settings_ios.php";
|
||||
// URL EQNTipoChiamataRegistrazione server
|
||||
@@ -132,6 +134,7 @@ typedef NS_ENUM(NSInteger, EQNTipoChiamata) {
|
||||
EQNTipoChiamataCommentoTerremoto,
|
||||
EQNTipoChiamataImpostazioniNotifiche,
|
||||
EQNTipoChiamataOfferTimeRemaining,
|
||||
EQNTipoChiamataRegisterSubscription,
|
||||
EQNTipoChiamataAlertPushTest,
|
||||
EQNTipoChiamataAlertSimulator
|
||||
};
|
||||
|
||||
@@ -174,6 +174,9 @@ extension IAPHelper: SKPaymentTransactionObserver {
|
||||
print("[IAPHelper] Handle purchased transaction (product: \(transaction.payment.productIdentifier))")
|
||||
deliverPurchaseNotificationFor(identifier: transaction.payment.productIdentifier)
|
||||
SKPaymentQueue.default().finishTransaction(transaction)
|
||||
|
||||
// register subscription
|
||||
serverPurchaseRegistration(for: transaction.payment.productIdentifier, transactionId:transaction.transactionIdentifier)
|
||||
}
|
||||
|
||||
private func handleRestored(transaction: SKPaymentTransaction) {
|
||||
@@ -185,6 +188,9 @@ extension IAPHelper: SKPaymentTransactionObserver {
|
||||
print("[IAPHelper] Handle restored transaction (product: \(productIdentifier))")
|
||||
deliverPurchaseNotificationFor(identifier: productIdentifier)
|
||||
SKPaymentQueue.default().finishTransaction(transaction)
|
||||
|
||||
// register subscription
|
||||
serverPurchaseRegistration(for: productIdentifier, transactionId: transaction.transactionIdentifier)
|
||||
}
|
||||
|
||||
private func handleFailed(transaction: SKPaymentTransaction) {
|
||||
@@ -206,4 +212,17 @@ extension IAPHelper: SKPaymentTransactionObserver {
|
||||
UserDefaults.standard.set(true, forKey: identifier)
|
||||
NotificationCenter.default.post(name: .IAPHelperPurchaseNotification, object: identifier)
|
||||
}
|
||||
|
||||
private func serverPurchaseRegistration(for productId: String, transactionId: String?) {
|
||||
let idTransaction = transactionId ?? "NOT_AVAILABLE"
|
||||
|
||||
let url = EQNGeneratoreURLServer.urlRegisterSubscription(forProductId: productId, transactionId: idTransaction)
|
||||
ServerRequest.default().inviaInformazioniAlServer(with: url, richiesta: .registerSubscription) { (response) in
|
||||
// nope
|
||||
print("[IAPHelper] Subscription registered with server")
|
||||
} failure: { (error) in
|
||||
// nope
|
||||
print("[IAPHelper] Error when registering subscription (error: \(String(describing: error?.localizedDescription))")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
+ (NSURL *)urlInvioCommentoTerremoto:(NSString *)commento codeMessage:(NSString *)code;
|
||||
+ (NSURL *)urlInvioImpostazioniNotifiche;
|
||||
+ (NSURL *)urlDownloadOfferTimeRemaining;
|
||||
+ (NSURL *)urlRegisterSubscriptionForProductId:(NSString *)productId transactionId:(NSString *)transactionId;
|
||||
+ (NSURL *)urlAlertPushTest;
|
||||
+ (NSURL *)urlAlertSimulator;
|
||||
|
||||
|
||||
@@ -243,6 +243,13 @@
|
||||
return [NSURL URLWithString:stringUrl];
|
||||
}
|
||||
|
||||
+ (NSURL *)urlRegisterSubscriptionForProductId:(NSString *)productId transactionId:(NSString *)transactionId
|
||||
{
|
||||
NSString *walletSub = @""; // codice associato all'acquisto che conosce anche l'utente (se esiste)
|
||||
NSString *stringUrl = [NSString stringWithFormat:@"%@?u_id=%@&token_sub=%@&wallet_sub=%@&sku=%@&ios=1", EQNServerUrlRegisterSubscription, [EQNUser defaultUser].user_ID, transactionId, walletSub, productId];
|
||||
return [NSURL URLWithString:stringUrl];
|
||||
}
|
||||
|
||||
+ (NSURL *)urlAlertPushTest
|
||||
{
|
||||
EQNGenericValue *radius = [EQNData raggioSismaFor:[EQNAllertaSismica sharedInstance].raggioSismiLievi];
|
||||
|
||||
@@ -140,6 +140,7 @@
|
||||
case EQNTipoChiamataCalibrazione:
|
||||
case EQNTipoChiamataImpostazioniNotifiche:
|
||||
case EQNTipoChiamataAlertSimulator:
|
||||
case EQNTipoChiamataRegisterSubscription:
|
||||
onSuccess(newStr);
|
||||
default:
|
||||
// don't call the callback
|
||||
|
||||
Reference in New Issue
Block a user