Membuat Kelompok Langganan iOS
Copy sebuah prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Kelompok langganan sangat penting untuk mengorganisasi dan mengelola beberapa tingkat langganan dalam aplikasi iOS Anda. Memahami bagaimana mereka bekerja sangat penting untuk menerapkan fungsi upgrade, downgrade, dan crossgrade.
Apa itu Kelompok Langganan?
Bab berjudul “Apa itu Kelompok Langganan?”Kelompok langganan adalah kumpulan langganan terkait yang pengguna dapat memilih. Pengguna hanya dapat berlangganan satu langganan dalam kelompok pada satu waktu. Ketika mereka berganti langganan, Apple akan mengelola transisi secara otomatis.
Mengapa Kelompok Langganan Penting
Bab berjudul “Mengapa Kelompok Langganan Penting”Kelompok langganan memungkinkan:
- Harga berjenjang: Menawarkan paket dasar, premium, dan ultimate
- Durasi yang berbeda: Pilihan bulanan, tahunan, dan seumur hidup
- Logika Perbaruan/Turun: Pengelolaan Otomatis Perubahan Langganan
- Pengelolaan yang Sederhana: Pengelompokan Langganan yang Terkait
Level Langganan
Judul Bagian “Level Langganan”Di dalam suatu kelompok, setiap langganan harus diberi ranking dari nilai tertinggi (tingkat 1) hingga nilai terendah. Peringkat ini menentukan bagaimana perubahan langganan diklasifikasikan:

Contoh Level
Judul Bagian “Contoh Level”Tingkat 1 (Nilai Tertinggi)
- Biaya Tahunan Premium ($99,99/tahun)
- Ultimate Bulanan ($19,99/bulan)
Tingkat 2 (Nilai Sedang)
- Biaya Tahunan Standar ($49,99/tahun)
- Bulanan Premium ($9,99/bulan)
Tingkat 3 (Nilai Terendah)
- Biaya Tahunan Dasar ($29,99/tahun)
- Bulanan Standar ($4,99/bulan)
Jenis Perubahan Langganan
Judul Bagian “Jenis Perubahan Langganan”Apple secara otomatis mengelola tiga jenis perubahan langganan berdasarkan tingkat ranking:
1. Upgrade
Judul Bagian “1. Upgrade”Berpindah ke langganan tingkat lebih tinggi (misalnya, level 2 → level 1). Behavior:
Berlaku
- segera Pengguna menerima
- pengembalian prorata untuk waktu sisa __CAPGO_KEEP_0__
- Langganan baru dimulai segera
Contoh:
// User currently has: Standard Monthly (Level 2)// User upgrades to: Premium Annual (Level 1)// Result: Immediate access to Premium, refund for unused Standard time2. Menurun
Bagian berjudul “2. Menurun”Mengalihkan ke sebuah langganan kelas lebih rendah (misalnya, level 1 → level 2). Tindakan:
Berlaku pada tanggal
- renewal berikutnya Pengguna tetap mempertahankan langganan saat ini hingga periode berakhir
- Pengguna tetap mempertahankan langganan saat ini hingga periode berakhir
- Langganan baru akan dimulai secara otomatis setelah kedaluwarsa
Contoh:
// User currently has: Premium Annual (Level 1)// User downgrades to: Standard Monthly (Level 2)// Result: Premium access continues until annual renewal date, then switches3. Crossgrade
Judul bagian “3. Crossgrade”Mengganti ke langganan lainnya di tingkat yang sama.
Perilaku tergantung pada durasi:
Durasi Berbeda → Berperilaku seperti penurunan
- Berlaku pada tanggal jadwal perpanjangan berikutnya
- Contoh: Premium Bulanan (Level 1) → Premium Tahunan (Level 1)
Durasi yang Sama → Berperilaku seperti upgrade
- Berlaku segera
- Contoh: Premium Bulanan (Level 1) → Ultimate Bulanan (Level 1)
Membuat Kelompok Langganan
Judul Bagian “Membuat Kelompok Langganan”-
Navigasikan ke Langganan
Di App Store Connect, pilih aplikasi Anda dan pergi ke Monetize > Langganan.
-
Buat Kelompok
Klik + ke “Kelompok Langganan” untuk membuat kelompok baru.
-
Nama Kelompok
Pilih nama yang deskriptif yang mencerminkan langganan yang terkandung:
- “Akses Premium”
- “Rencana Penyimpanan Cloud”
- “Fitur Pro”
-
Tambahkan Langganan
Setelah membuat kelompok, tambahkan langganan individu ke dalamnya. Setiap langganan akan memiliki peringkat level.
-
Tetapkan Peringkat Level
Urutkan langganan dari nilai tertinggi (1) ke nilai terendah. Pertimbangkan:
- Rencana tahunan biasanya memiliki peringkat lebih tinggi daripada rencana bulanan
- Tingkat harga yang lebih tinggi berada di atas yang lebih rendah
- Tingkat ultimate/premium berada di atas
Menggunakan di Aplikasi Anda
Bagian berjudul “Menggunakan di Aplikasi Anda”Plugin pembelian native secara otomatis mengelola logika grup langganan:
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch all subscriptions in a groupconst { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly', 'premium_annual', 'ultimate_monthly'], productType: PURCHASE_TYPE.SUBS,});
// Display current subscription using StoreKit transactionsconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const activeSubs = purchases.filter((purchase) => purchase.isActive);
// Detect pending downgrade/cancellation (StoreKit sets willCancel === true)const pendingChange = purchases.find((purchase) => purchase.willCancel === true);if (pendingChange) { console.log('Subscription will stop auto-renewing on', pendingChange.expirationDate);}
// Purchase (StoreKit handles upgrades/downgrades automatically)await NativePurchases.purchaseProduct({ productIdentifier: 'premium_annual', productType: PURCHASE_TYPE.SUBS,});
// Listen for StoreKit updates (fires on upgrades/downgrades/refunds)NativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription updated:', transaction);});Mengelola Perubahan Langganan
Bagian berjudul “Mengelola Perubahan Langganan”Mendeteksi Tipe Perubahan
Bagian berjudul “Mendeteksi Tipe Perubahan”import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Get current subscription infoconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const currentSubscription = purchases.find( (purchase) => purchase.subscriptionState === 'subscribed',);
if (currentSubscription) { // StoreKit reports if user cancelled auto-renew if (currentSubscription.willCancel) { console.log( `User cancelled. Access remains until ${currentSubscription.expirationDate}`, ); }
if (currentSubscription.isUpgraded) { console.log('User recently upgraded to this plan.'); }}
// Listen for automatic upgrades/downgradesNativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription changed!', transaction); if (transaction.subscriptionState === 'revoked') { revokeAccess(); } else if (transaction.isActive) { unlockPremiumFeatures(); }});Komunikasi Pengguna
Judul Bagian: Komunikasi PenggunaSelalu komunikasikan perilaku perubahan dengan jelas:
For Upgrade:
“Anda akan mendapatkan akses langsung ke fitur Premium. Kami akan menghitung ulang langganan Anda saat ini.”
For Downgrade:
“Anda akan tetap memiliki akses Premium hingga tanggal [tanggal ulang], kemudian Anda akan berganti ke Standard.”
For Crossgrade:
“Rencana Anda akan berubah ke pembayaran tahunan pada tanggal ulang berikutnya pada [tanggal].”
Pengawasan Server
Judul Bagian: Pengawasan ServerGunakan Apple’s App Store Server Notifications v2 atau backend validasi bukti pembayaran Anda sendiri untuk menggambarkan perubahan StoreKit di database Anda. Pasang pengiriman server dengan penggunaan listener sehingga klien dan backend tetap sinkron. transactionUpdated Server monitoring
Praktik Terbaik
Judul Bagian “Praktik Terbaik”Organisasi Kelompok
Judul Bagian “Organisasi Kelompok”- Tetapkan langganan terkait di kelompok yang sama
- Jangan campurkan fitur yang tidak terkait (misalnya penyimpanan dan penghapusan iklan)
- Buat kelompok terpisah untuk setiap set fitur
Strategi Peringkat Level
Judul Bagian “Strategi Peringkat Level”- Rencana tahunan → Tingkat lebih tinggi daripada bulanan (untuk tingkat yang sama)
- Tingkat harga yang lebih tinggi → Tingkat lebih tinggi
- Perhatikan nilai, bukan hanya harga
Pengalaman Pengguna
Judul Bagian “Pengalaman Pengguna”- Tampilkan langganan saat ini secara jelas
- Tampilkan semua pilihan yang tersedia di grup
- Tunjukkan perubahan mana yang langsung vs. pada masa depan
- Izinkan perubahan mudah antar paket
Pengujian
Judul Bagian “Pengujian”- Uji semua skenario peningkatan
- Uji semua skenario penurunan
- Verifikasi perilaku crossgrade
- Periksa kejadian webhook
Skenario Umum
Skenario UmumSkenario 1: Tiga Tingkat Bulanan
Skenario 1: Tiga Tingkat BulananLevel 1: Ultimate Monthly ($19.99)Level 2: Premium Monthly ($9.99)Level 3: Basic Monthly ($4.99)- Basic → Premium: Naikkan (langsung)
- Premium → Ultimate: Naikkan (langsung)
- Ultimate → Premium: Turunkan (pada masa ulang)
- Basic → Ultimate: Naikkan (langsung)
Skenario 2: Rencana Durasi Campuran
Skenario 2: Rencana Durasi CampuranLevel 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- Monthly → Tahunan: Crossgrade (pada perpanjangan)
- Annual → Monthly: Downgrade (pada perpanjangan)
Skenario 3: Multi-Tier Multi-Duration
Judul Bagian “Skenario 3: Multi-Tier Multi-Duration”Level 1: Ultimate Annual ($199/year)Level 2: Ultimate Monthly ($19.99/month)Level 3: Premium Annual ($99/year)Level 4: Premium Monthly ($9.99/month)Level 5: Basic Annual ($49/year)Level 6: Basic Monthly ($4.99/month)Pengaturan ini menyediakan fleksibilitas maksimum sambil menjaga logika upgrade/downgrade yang jelas.
Bantuan
contextJudul Bagian “Bantuan”
- Langganan tidak muncul dalam kelompok:
- Pastikan telah diberikan kepada kelompok yang benar
- Periksa apakah sudah dalam status “Siap Dikirim” setidaknya
Perilaku upgrade/turun tidak tepat:
- Peringkat ulasan (1 = tertinggi)
- Pastikan tingkatan langganan sesuai
- Periksa bahwa tingkatannya sudah benar
Produk dari grup yang berbeda:
- Pengguna dapat berlangganan ke beberapa grup secara bersamaan
- Ini sengaja - jaga produk terkait di grup yang sama
getActiveProducts menampilkan langganan multiple:
- Periksa jika langganan berada di grup yang berbeda
- Pastikan pengguna tidak berlangganan melalui Family Sharing
- Periksa status langganan di App Store Connect
Sumber Daya Tambahan
Sumber Daya TambahanUntuk informasi lebih lanjut, silakan mengacu pada documentasi resmi Apple tentang kelompok langganan.
Teruskan dari Membuat Kelompok Langganan iOS
Sumber Daya Tertentu Titled “Teruskan dari Membuat Kelompok Langganan iOS”Jika Anda menggunakan Membuat Kelompok Langganan iOS untuk merencanakan persetujuan toko dan distribusi, hubungkan dengan Menggunakan @capgo/native-purchases untuk kemampuan native di Menggunakan @capgo/native-purchases, @capgo/capacitor-in-app-review untuk detail implementasi di @capgo/capacitor-in-app-review, Gunakan @capgo/capacitor-ulasan-dalam-aplikasi untuk kemampuan asli dalam Gunakan @capgo/capacitor-ulasan-dalam-aplikasi @capgo/capacitor-pasar-nasional untuk detail implementasi dalam @capgo/capacitor-pasar-nasional, dan Gunakan @capgo/capacitor-pasar-nasional untuk kemampuan asli dalam Gunakan @capgo/capacitor-pasar-nasional.