Membuat Kelompok Pembelian iOS
Salin prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Kelompok langganan sangat penting untuk mengorganisir dan mengelola beberapa tingkat langganan di aplikasi iOS Anda. Memahami cara kerjanya sangat penting untuk menerapkan fungsi upgrade, downgrade, dan crossgrade.
Apa itu Kelompok Langganan?
Judul bagian “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.
Kenapa Kelompok Pembayaran Berlangganan Penting
Judul Bagian: Kenapa Kelompok Pembayaran Berlangganan PentingKelompok berlangganan memungkinkan:
- Pembayaran berlangganan berjenjang: Tawarkan rencana dasar, premium, dan ultimate
- Pilihan durasi yang berbeda: Pilihan bulanan, tahunan, dan seumur hidup
- Logika peningkatan/penurunan: Pengelolaan otomatis perubahan berlangganan
- Pengelolaan yang sederhana: Kumpulkan berlangganan terkait bersama
Level Berlangganan
Tingkatan BerlanggananDalam kelompok, setiap berlangganan harus dinilai dari nilai tertinggi (tingkat 1) hingga nilai terendah. Peringkat ini menentukan bagaimana perubahan berlangganan diklasifikasikan:

Contoh Tingkat
Tingkatan BerlanggananTingkat 1 (Nilai Tertinggi)
- Tahunan Premium ($99,99/tahun)
- Bulanan Ultimate ($19,99/bulan)
Tingkat 2 (Nilai Menengah)
- Tahunan Standar ($49,99/tahun)
- Premium Bulanan ($9,99/bulan)
Level 3 (Nilai Terendah)
- Basic Tahunan ($29,99/tahun)
- Standar Bulanan ($4,99/bulan)
Jenis Perubahan Langganan
Judul Bagian “Jenis Perubahan Langganan”Apple secara otomatis mengelola tiga jenis perubahan langganan berdasarkan ranking level:
1. Upgrade
Judul Bagian “1. Upgrade”Mengalihkan ke tingkat yang lebih tinggi subscription (e.g., level 2 → level 1).
Tindakan:
- Berlaku langsung
- Pengguna menerima pengembalian sebagian untuk waktu yang tersisa
- 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. Menurunkan Level
Bagian berjudul “2. Menurunkan Level”Mengalihkan ke langganan tingkat lebih rendah (misalnya, level 1 → level 2). Sifat:
Berlaku pada
- tanggal ulang pembayaran berikutnya Pengguna tetap memiliki langganan saat ini hingga periode berakhir
- Langganan baru akan dimulai secara otomatis setelah kedaluwarsa
- Contoh:
Salin ke clipboard
// User currently has: Premium Annual (Level 1)// User downgrades to: Standard Monthly (Level 2)// Result: Premium access continues until annual renewal date, then switchesBagian berjudul “3. Crossgrade”
__CAPGO_KEEP_0__Mengganti ke langganan lain di tingkat yang sama.
Perilaku tergantung pada durasi:
Durasi Berbeda → Berperilaku seperti turun
- Berlaku pada tanggal jadwal perpanjangan berikutnya
- Contoh: Premium Bulanan (Tingkat 1) → Premium Tahunan (Tingkat 1)
Durasi Sama → Berperilaku seperti naik
- Berlaku segera
- Membuat Kelompok Langganan
Membuat Kelompok Langganan
Bagian berjudul “Membuat Kelompok Langganan”-
Navigasikan ke Langganan
Pilih aplikasi Anda di App Store Connect dan pergi ke Monetize > Langganan.
-
Membuat Kelompok
Klik + berikutnya di samping “Kelompok Langganan” untuk membuat kelompok baru.
-
Berinama Kelompok
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.
-
Tetapkan Ranking Tingkat
Susun langganan dari nilai tertinggi (1) ke nilai terendah. Pertimbangkan:
- Rencana tahunan biasanya memiliki ranking lebih tinggi daripada bulanan
- Tingkat harga yang lebih tinggi berada di atas tingkat harga yang lebih rendah
- Tingkat ultimate/premium berada di atas
Menggunakan di Aplikasi Anda
Bagian berjudul “Menggunakan di Aplikasi Anda”Plugin native-purchases 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
Bagian berjudul “Mengatasi 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
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 kehilangan akses ke fitur Premium. Kami akan menghitung ulang langganan Anda saat ini.”
Anda akan tetap memiliki akses Premium hingga [tanggal perpanjangan], kemudian akan berganti ke Standar.
Untuk Crossgrades:
“Rencana Anda akan berubah ke pembayaran Tahunan pada perpanjangan berikutnya pada [tanggal].”
Pengawasan Server
Judul Bagian “Pengawasan Server”Gunakan Apple’s App Store Server Notifications v2 atau backend validasi bukti pembelian Anda sendiri untuk menggandakan perubahan StoreKit di database Anda. Pasang notifikasi server dengan pemirsa untuk memastikan klien dan backend tetap sinkron. transactionUpdated Praktik Terbaik
Judul Bagian “Praktik Terbaik”
Organisasi KelompokJudul Bagian “Organisasi Kelompok”
Tetapkan langganan terkait di kelompok yang sama- Penggunaan
- 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 yang lebih tinggi
- Perhatikan nilai, bukan hanya harga
Pengalaman Pengguna
Judul Bagian “Pengalaman Pengguna”- Tampilkan langganan saat ini secara jelas
- Tampilkan semua opsi yang tersedia dalam kelompok
- Tunjukkan perubahan mana yang segera vs. pada saat perpanjangan
- Mudahkan beralih antar paket
Pengujian
Bagian berjudul “Pengujian”- Uji semua skenario upgrade
- Uji semua skenario down grade
- Verifikasi perilaku crossgrade
- Periksa kejadian webhook
Skenario Umum
Bagian berjudul “Skenario Umum”Skenario 1: Tiga-Tingkat Paket Bulanan
Bagian berjudul “Skenario 1: Tiga-Tingkat Paket Bulanan”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: Paket Durasi Campuran
Judul Bagian “Skenario 2: Paket Durasi Campuran”Level 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- Bulanan → Tahunan: Crossgrade (pada perpanjangan)
- Tahunan → Bulanan: Turunkan (pada perpanjangan)
Skenario 3: Multi-Tingkat Multi-Durasi
Judul Bagian “Skenario 3: Multi-Tingkat Multi-Durasi”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/turun yang jelas.
Pengaturan
Judul bagian “Pengaturan”Langganan tidak muncul di grup:
- Pastikan sudah diatur ke grup yang benar
- Periksa apakah sudah dalam status “Siap Dikirim” setidaknya
- Pastikan ID produk benar
Pengaturan upgrade/turun yang salah:
- Tinjau peringkat level (1 = tertinggi)
- Pastikan tingkat langganan sesuai
- Periksa apakah level sudah diatur dengan benar
Produk dari grup yang berbeda:
- Pengguna dapat mendaftar ke beberapa kelompok secara bersamaan
- Ini sengaja - simpan produk terkait di kelompok yang sama
getActiveProducts menampilkan beberapa langganan:
- Periksa apakah langganan ada di kelompok yang berbeda
- Verifikasi pengguna tidak berlangganan melalui Family Sharing
- Periksa status langganan di App Store Connect
Sumber Daya Tambahan
Bab berjudul “Sumber Daya Tambahan”Untuk informasi lebih lanjut, lihat documentasi resmi Apple tentang kelompok langganan.
Teruskan dari Membuat Kelompok Langganan iOS
Bab berjudul “Teruskan dari Membuat Kelompok Langganan iOS”Jika Anda menggunakan Buat Grup Pembelian iOS untuk merencanakan persetujuan toko dan distribusi, hubungkannya dengan Menggunakan @capgo/native-purchases untuk kemampuan asli dalam Menggunakan @capgo/native-purchases, @capgo/capacitor-in-app-review untuk detail implementasi dalam @capgo/capacitor-in-app-review, Menggunakan @capgo/capacitor-in-app-review untuk kemampuan asli dalam Menggunakan @capgo/capacitor-in-app-review, @capgo/capacitor-native-market untuk detail implementasi dalam @capgo/capacitor-native-market, dan Menggunakan @capgo/capacitor-native-market untuk kemampuan asli di Menggunakan @capgo/capacitor-native-market.