Mobile Game VIP / Premium Subscription Implementation

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Mobile Game VIP / Premium Subscription Implementation
Medium
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing VIP/Premium Subscription System for Mobile Games

Subscription in mobile games is technically more complex than one-time IAP: you manage state, handle cancellation, restoration, upgrades/downgrades between tiers, grace period on failed billing. Errors here are expensive — user loses access to paid content and writes angry review.

VIP Subscription Models in Games

Daily VIP — daily bonus while active: +20% coin drop, +1 free attempt, exclusive daily chest. Low price ($1.99–4.99/mo), high conversion.

Premium subscription — removes ads + monthly resource package + VIP-badge. Price $4.99–9.99/mo.

VIP Levels — multiple tiers (VIP Bronze, Silver, Gold) with growing privileges. More complex implementation but monetizes different audience segments.

Implementation on iOS (StoreKit 2)

import StoreKit

class SubscriptionManager: ObservableObject {
    @Published var isVIPActive = false
    private var updateTask: Task<Void, Error>?

    func startListeningForTransactions() {
        updateTask = Task.detached {
            for await result in Transaction.updates {
                await self.handle(result)
            }
        }
    }

    private func handle(_ result: VerificationResult<Transaction>) async {
        guard case .verified(let transaction) = result else { return }

        if transaction.productType == .autoRenewable {
            let isActive = transaction.revocationDate == nil
                && (transaction.expirationDate ?? .distantPast) > Date()
            await MainActor.run { self.isVIPActive = isActive }
        }
        await transaction.finish()
    }

    func checkCurrentEntitlements() async {
        for await result in Transaction.currentEntitlements {
            await handle(result)
        }
    }
}

Critical: listen to Transaction.updates from app launch — not just when opening shop. Otherwise you'll miss renewal or revocation while app is in background.

Implementation on Android (Google Play Billing Library 6)

class BillingManager(private val context: Context) {
    private val billingClient = BillingClient.newBuilder(context)
        .setListener { billingResult, purchases ->
            if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
                purchases?.forEach { handlePurchase(it) }
            }
        }
        .enablePendingPurchases()
        .build()

    private fun handlePurchase(purchase: Purchase) {
        if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
            if (!purchase.isAcknowledged) {
                val params = AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.purchaseToken)
                    .build()
                billingClient.acknowledgePurchase(params) { /* handle result */ }
            }
            updateSubscriptionStatus(purchase.products, isActive = true)
        }
    }
}

Acknowledge is mandatory for subscription! Google auto-cancels unacknowledged purchases after 3 days. Forgotten acknowledge — most common cause of complaints "money charged but subscription didn't activate".

Server-Side Verification and Sync

Subscription status cannot be stored only on client. Architecture:

  1. Client gets receipt/purchaseToken after purchase
  2. Client sends it to backend
  3. Backend verifies via App Store Server API (iOS) or Google Play Developer API (Android)
  4. Backend saves subscription status in DB with expiration date
  5. On each app start, client fetches current status from server

Apple App Store Server Notifications V2 — webhook Apple sends to your endpoint on renewal, cancellation, grace period entry, billing retry. Real-time without polling:

POST /apple/subscription-notifications
{
  "signedPayload": "...", // JWT signed by Apple
  "notificationType": "DID_RENEW" | "EXPIRED" | "GRACE_PERIOD_EXPIRED" | ...
}

Grace Period

On failed auto-billing (no money on card) Apple and Google give grace period: iOS — 6 days for monthly, Android — 3 days. During grace period subscription is active but show warning: "Payment problem, update payment info".

Without grace period handling, players lose access suddenly and don't understand why — chargebacks and 1-star reviews.

Managing Tiers

With multiple subscription tiers (VIP1, VIP2, VIP3), handle upgrades and downgrades:

  • Upgrade (VIP1 → VIP2): on iOS via Product.SubscriptionInfo.upgradePolicies, immediate with prorated calculation
  • Downgrade (VIP2 → VIP1): applies at next period start

Different product IDs for different tiers must be in same subscriptionGroupId (iOS) / basePlanId (Android) — lets platform handle transitions correctly.

Subscription Analytics

Key events to track: subscription_started, subscription_renewed, subscription_cancelled, subscription_expired, grace_period_entered. Send to Firebase/Amplitude + Subscription Analytics Dashboard.

Metrics: MRR (Monthly Recurring Revenue), churn rate (% cancelled per month), subscriber LTV. Churn above 10%/mo signals subscription doesn't provide enough value.

Timeline: basic subscription with one tier, server verification and renewal handling — 3–5 days. System with multiple tiers, App Store Server Notifications, grace period and analytics — 7–10 days.