Lanjutkan dari Membuat Kelompok Langganan iOS
Copy sebuah prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Grup langganan sangat penting untuk mengorganisasikan dan mengelola beberapa tingkat langganan di aplikasi iOS Anda. Memahami cara kerjanya sangat penting untuk menerapkan fungsi upgrade, penurunan, dan crossgrade.
Apa itu Grup Langganan?
Bab berjudul “Apa itu Grup Langganan?”Grup langganan adalah kumpulan langganan terkait yang pengguna dapat memilih. Pengguna hanya dapat berlangganan satu langganan dalam satu grup pada satu waktu. Ketika mereka berganti langganan, Apple akan mengelola transisi secara otomatis.
Mengapa Grup Langganan Penting
Bab berjudul “Mengapa Grup Langganan Penting”Grup langganan memungkinkan:
- Pengaturan tingkat: Tawarkan rencana dasar, premium, dan ultimate
- Durasi yang berbeda : Pilihan bulanan, tahunan, dan kekalahan
- Upgrade/downgrade logic : : Pengaturan otomatis perubahan langganan
- Simplified management : Pengelolaan yang lebih sederhana : Grupkan langganan terkait bersama
Pengaturan Langganan
Bab berjudul “Pengaturan Langganan”Dalam suatu grup, setiap langganan harus diurutkan dari nilai tertinggi (tingkat 1) hingga nilai terendah. Peringkat ini menentukan bagaimana perubahan langganan diklasifikasikan:

Contoh Tingkat
Bab berjudul “Contoh Tingkat”Tingkat 1 (Nilai Tertinggi)
- Tahunan Premium ($99,99/tahun)
- Bulanan Ultimate ($19,99/bulan)
Level 2 (Nilai Menengah)
- Tahunan Standar ($49,99/tahun)
- Bulanan Premium ($9,99/bulan)
Level 3 (Nilai Terendah)
- Tahunan Dasar ($29,99/tahun)
- Bulanan Standar ($4,99/bulan)
Jenis Perubahan Langganan
Judul Bagian: Perubahan Jenis LanggananApple secara otomatis mengelola tiga jenis perubahan langganan berdasarkan tingkat peringkat:
1. Upgrade
Judul Bagian: 1. UpgradeMengalihkan ke langganan tingkat lebih tinggi (misalnya, level 2 → level 1). Behavior:
Berlaku
- langsung Pengguna menerima
- pengembalian dana prorata __CAPGO_KEEP_0__ untuk waktu sisa
- 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. Downgrade
Judul bagian “2. Downgrade”Mengalihkan ke langganan tingkat lebih rendah (misalnya, tingkat 1 → tingkat 2). Sifat:
Berlaku pada
- tanggal jadwal perpanjangan berikutnya __CAPGO_KEEP_0__
- Pengguna tetap memiliki langganan saat ini hingga akhir periode
- Langganan baru 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
Bab berjudul “3. Crossgrade”Mengganti ke langganan lainnya di tingkat yang sama.
Perilaku tergantung pada durasi:
Durasi Berbeda → Berperilaku seperti penurunan
- Berlaku pada tanggal perpanjangan berikutnya
- Contoh: Premium Bulanan (Level 1) → Premium Tahunan (Level 1)
Durasi Sama → Berperilaku seperti upgrade
- Berlaku segera
- Contoh: Premium Bulanan (Level 1) → Ultimate Bulanan (Level 1)
Membuat Kelompok Langganan
Judul bagian “Membuat Kelompok Langganan”-
Navigasi ke Langganan
Pergi ke App Store Connect, pilih aplikasi Anda dan pergi ke Monetize > Langganan.
-
Membuat Grup
Klik + di samping “Kelompok Langganan” untuk membuat kelompok baru.
-
Berikan Nama Grup
Pilih nama yang deskriptif yang merefleksikan langganan yang terkandung:
- “Akses Premium”
- “Rencana Penyimpanan Cloud”
- “Fitur Pro”
-
Tambahkan Langganan
Setelah membuat kelompok, tambahkan langganan individu ke dalamnya. Setiap langganan akan memiliki ranking tingkat.
-
Tentukan Peringkat Tingkat
Tata langganan dari nilai tertinggi (1) ke nilai terendah. Pertimbangkan:
- Rencana tahunan biasanya lebih tinggi daripada bulanan
- Tingkat yang lebih mahal rank di atas yang lebih murah
- Tingkat ultimate/premium rank tertinggi
Menggunakan di Aplikasi Anda
Judul Bagian “Menggunakan di Aplikasi Anda”Plugin pembelian asli secara otomatis mengelola logika kelompok 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);});Mengatasi Perubahan Langganan
Judul Bagian “Mengatasi Perubahan Langganan”Mendeteksi Tipe Perubahan
Judul Bagian “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 Pengguna”Selalu komunikasikan perilaku perubahan dengan jelas:
Untuk Perbaikan:
“Anda akan mendapatkan akses langsung ke fitur Premium. Kami akan menghitung ulang langganan Anda saat ini.”
Untuk Penurunan:
“Anda akan tetap memiliki akses Premium hingga [tanggal perpanjangan], kemudian beralih ke Standar.”
Untuk Perubahan Jenis:
“Rencana Anda akan berubah ke pembayaran Tahunan pada perpanjangan berikutnya pada [tanggal].”
Pengawasan Server
Judul Bagian “Pengawasan Server”Pakailah Apple’s App Store Server Notifications v2 atau backend validasi bukti menerima Anda sendiri untuk memantulkan perubahan StoreKit di database Anda. Pasang notifikasi server dengan transactionUpdated listener sehingga klien dan backend tetap sinkron.
Praktik Terbaik
Bab berjudul “Praktik Terbaik”Pengorganisasian Kelompok
Bab berjudul “Pengorganisasian 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 Tingkat
Bab berjudul “Strategi Peringkat Tingkat”- 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
Bagian berjudul “Pengalaman Pengguna”- Tampilkan langganan saat ini secara jelas
- Tampilkan semua opsi yang tersedia dalam kelompok
- Tunjukkan perubahan mana yang segera vs. pada masa perpanjangan
- Biarkan pengguna dapat berganti dengan mudah antar paket
Pengujian
Bagian berjudul “Pengujian”- Uji semua skenario upgrade
- Uji semua skenario downgrade
- Verifikasi perilaku crossgrade
- Periksa webhook berjalan
Skenario Umum
Judul Bagian “Skenario Umum”Skenario 1: Rencana Bulanan Tiga Tingkat
Judul Bagian “Skenario 1: Rencana Bulanan Tiga Tingkat”Level 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 perpanjangan)
- Basic → Ultimate: Naikkan (langsung)
Skenario 2: Rencana Durasi Campuran
Judul Bagian “Skenario 2: Rencana Durasi Campuran”Level 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- Bulan → Tahun: Ulang Tahun (pada perpanjangan)
- Tahun → Bulan: Menurun (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)Konfigurasi ini menyediakan fleksibilitas maksimum sambil menjaga logika upgrade/downgrade yang jelas.
Pengaturan Masalah
Judul Bagian “Pengaturan Masalah”Langganan tidak muncul di grup:
- Pastikan telah diberi tugas ke grup yang benar
- Periksa apakah sudah dalam status “Siap Dikirim” setidaknya
- Pastikan ID produk benar
Perilaku upgrade/turun tidak tepat:
- Ulangi ranking tingkat (1 = tingkat tertinggi)
- Verifikasi tingkat langganan yang masuk akal
- Periksa apakah tingkat sudah benar
Produk dari kelompok yang berbeda:
- Pengguna dapat berlangganan ke beberapa kelompok secara bersamaan
- Ini sengaja - jaga produk terkait di kelompok yang sama
getActiveProducts menampilkan langganan multiple:
- Periksa apakah langganan berada di kelompok yang berbeda
- Verifikasi pengguna tidak berlangganan melalui Family Sharing
- Ulangi status langganan di App Store Connect
Sumber Tambahan
Bagian berjudul “Sumber Tambahan”Untuk informasi lebih lanjut, lihat dokumentasi resmi Apple tentang kelompok langganan.
Lanjutkan dari Buat Kelompok Langganan iOS
Bagian berjudul “Lanjutkan dari Buat Kelompok Langganan iOS”Jika Anda menggunakan Buat 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-ulasan dalam aplikasi untuk detail implementasi di @capgo/capacitor-ulasan-dalam-aplikasi, Menggunakan @capgo/capacitor-ulasan-dalam-aplikasi untuk kemampuan asli di Menggunakan @capgo/capacitor-ulasan-dalam-aplikasi, @capgo/capacitor-pasar-asli untuk detail implementasi di @capgo/capacitor-pasar-asli, dan Menggunakan @capgo/capacitor-pasar-asli untuk kemampuan asli di Menggunakan @capgo/capacitor-pasar-asli.