Tüm Yazılar
KategoriiOS
Okuma Süresi
14 dk okuma
Yayın Tarihi
...
Kelime Sayısı
1.066kelime

Kahveni hazırla - bu içerikli bir makale!

App Store Connect'te subscription yönetimi: intro/promo/winback offers, offer codes, family sharing setup, offer eligibility, pricing regions ve analytics.

App Store Connect Subscriptions: Offer Codes, Family Sharing, Winback

# App Store Connect Subscriptions: Offer Codes, Family Sharing, Winback

App Store Connect'in subscription management sistemi her yıl güçleniyor. 2026 itibariyle: offer codes (redeemable promotional), family sharing (1 purchase 6 family), winback offers (canceled users), multi-tier pricing (165 ülke), intro offer policies. Bu yazı her feature'ın nasıl set edildiğini, StoreKit 2 entegrasyonunu, best practice'leri ve dashboard navigation'ı kapsar.

💡 Pro Tip: Offer codes $0 marketing bütçesiyle user acquisition'ın best yolu. Influencer'lara özel kod ver, traceable attribution al.

İçindekiler


Subscription Setup Basics

App Store Connect → My Apps → [Your App] → Subscriptions:

  1. Subscription Group oluştur (same group members mutual exclusive)
  2. Her group'a subscription products ekle
  3. Her product'a pricing (165 region) + localized display names + description

Auto-Renewable vs Consumable

  • Auto-renewable: Monthly, yearly — auto-renew (default)
  • Non-renewable: Fixed term (3 month access) — manual renew
  • Consumable: One-time (coins, tokens)

Introductory Offers

Yeni abone olanlara giriş:

  • Free trial: 3/7/14/30 gün ücretsiz
  • Pay as you go: İlk X ay discount price
  • Pay up front: Tek-seferlik lower price (ilk 3 ay $9.99)
swift
1// StoreKit 2'de access
2if let offer = product.subscription?.introductoryOffer {
3 print("First \(offer.period.formatted): \(offer.displayPrice)")
4 // UI'da göster: "7 gün ücretsiz, sonra ayda $9.99"
5}

Eligibility: Daha önce free trial veya intro offer kullanmamış.


Promotional Offers (Signed)

Mevcut veya expired subscribers'a target:

  1. App Store Connect'te offer oluştur (ID + price + duration)
  2. Private key download (one-time)
  3. Server'da JWT sign
  4. App'te .promotionalOffer() parameter ile purchase

Server JWT Signing

typescript
1import crypto from 'crypto';
2 
3function signPromoOffer(
4 offerID: string,
5 productID: string,
6 subscribeID: string // user's Apple ID hash
7): string {
8 const nonce = crypto.randomUUID();
9 const timestamp = Math.floor(Date.now() / 1000);
10 
11 const data = `${bundleID}\u2063${keyID}\u2063${productID}\u2063${offerID}\u2063${subscribeID}\u2063${nonce}\u2063${timestamp}`;
12 
13 const signature = crypto.sign('sha256', Buffer.from(data), privateKey);
14 return signature.toString('base64');
15}

iOS Client

swift
1let signed = await myBackend.signPromoOffer(offerID: "winter_discount")
2 
3let result = try await product.purchase(options: [
4 .promotionalOffer(
5 offerID: signed.offerID,
6 keyID: signed.keyID,
7 nonce: signed.nonce,
8 signature: signed.signature,
9 timestamp: signed.timestamp
10 )
11])

Use case: Current subscribers'a discount ile upgrade.


Winback Offers (iOS 18+)

iOS 18'te eklendi — canceled users'a özel offer:

  1. App Store Connect'te winback offer oluştur
  2. User cancel ettiğinde App Store automatic shows winback
  3. App içinde de trigger edilebilir

App içi winback tetikleme

swift
1let winbackOffers = product.subscription?.winBackOffers ?? []
2 
3if let offer = winbackOffers.first {
4 let result = try await product.purchase(options: [
5 .winBackOfferID(offer.id)
6 ])
7}

Churn reduction için altın. %15-25 canceled user'ı geri getiriyor.


Offer Codes (Redeemable)

App Store Connect → Subscriptions → Generate Custom Codes:

  • Single-use codes (50,000'e kadar batch)
  • Fixed-use (same code 10x use)
  • Custom expiration
  • Tied to specific offer

Distribute

  • Influencer marketing: "Code: TECHSARAH for 50% first year"
  • Customer support: "Here's 30-day trial extension"
  • Press/reviewers: Full free access

User redeem: Settings > Apple ID > Subscriptions > Redeem Code.

Tracking

Dashboard'da per-code:

  • Redeemed count
  • Revenue attributed
  • Conversion to paid (after trial)

Family Sharing

"Family Sharing Enabled" toggle'ı App Store Connect'te aktif et.

Impact

  • 1 satın alma → 6 family member aynı pro'ya sahip
  • User purchase receipt'inde ownershipType: familyShared görünür
swift
1for await entitlement in Transaction.currentEntitlements {
2 if case .verified(let transaction) = entitlement {
3 if transaction.ownershipType == .familyShared {
4 print("Family sharing")
5 } else {
6 print("Direct")
7 }
8 }
9}

Decision

  • Enable: User-friendly, premium feature signal
  • Disable: Revenue maksimize (6 family member ayrı öde)

Default öneri: Enable — user satisfaction, word-of-mouth.


Pricing ve Region

165 region'da pricing:

  1. Dashboard → Pricing tab → "Add pricing for [region]"
  2. Default: App Store'un currency conversion önerisi
  3. Custom: Ülke-spesifik discount (India %50 cheaper, Turkey %40 cheaper)

Custom Pricing Strategies

  • Emerging markets: India, Brazil, Turkey — %40-60 daha ucuz
  • High-income markets: US, UK, Germany — full price
  • Developing markets: Vietnam, Philippines — %60 discount

PPP (Purchasing Power Parity) adjusted pricing, conversion %50-200 artırabiliyor.


Analytics Dashboard

App Store Connect → Analytics:

  • Subscriptions: Active count, new subscribers, renewals, churn
  • Revenue: Daily, monthly — by product, region
  • Offer performance: Intro/promo/winback conversion
  • User cohorts: Day 1, 7, 30, 90 retention

Export CSV for deeper analysis.

Key Metrics to Track

  • MRR: (monthly recurring revenue)
  • LTV: (lifetime value)
  • Churn rate: (monthly)
  • Conversion rate: (free → paid)
  • Trial-to-paid
  • Offer uptake %

ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

Yeni subscription product launch ederken: 1. ✅ Product ID: consistent cross-platform (`pro_monthly`) 2. ✅ Subscription group tanımla (tier structure için) 3. ✅ Pricing 165 region (PPP-adjusted) 4. ✅ Localized display name + description (8+ dil) 5. ✅ App Store screenshot (subscription features showcasing) 6. ✅ Intro offer (7-gün trial default) 7. ✅ Family Sharing toggle (öneri: aktif) 8. ✅ Offer codes (launch marketing için 100 unit) 9. ✅ Winback offer setup (iOS 18+ required) 10. ✅ Analytics dashboard'da custom segments 11. ✅ Webhook (RevenueCat veya self-built) 12. ✅ Paywall UX (SwiftUI + RevenueCatUI önerilir) **External Resources:** - [App Store Connect Help](https://help.apple.com/app-store-connect/) - [Subscriptions guide](https://developer.apple.com/app-store/subscriptions/) - [Offer codes guide](https://help.apple.com/app-store-connect/#/devf711f2ad2) - [Winback offers](https://developer.apple.com/documentation/appstoreserverapi/win-back_offer) - [Family Sharing](https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_family_sharing)

Sonuç

App Store Connect subscription management mature tool. Intro + promo + winback offers + offer codes + family sharing + regional pricing — hepsi production için kritik. PPP-adjusted pricing + winback offers %30+ revenue artışı yaratabiliyor. Dashboard analytics ile data-driven decisions. Manuel self-build zor; RevenueCat orchestration için ideal complement.

*İlgili yazılar: StoreKit 2, RevenueCat, $1M App Story.*

Etiketler

#iOS#App Store Connect#Subscription#Offer Codes#Family Sharing#Winback
Muhittin Çamdalı

Muhittin Çamdalı

Senior iOS Developer

12+ yıllık deneyime sahip iOS Developer. Swift, SwiftUI ve modern iOS mimarileri konusunda uzman. Apple platformlarında performanslı ve kullanıcı dostu uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

Bunu da begenebilirsiniz