Membuat Kelompok Langganan 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, penurunan, dan crossgrade.
Apa itu Kelompok Langganan?
Judul Bagian “Apa itu Kelompok Langganan?”Kelompok langganan adalah kumpulan langganan terkait yang pengguna dapat memilih antara. Pengguna hanya dapat berlangganan satu langganan dalam satu kelompok pada satu waktu. Ketika mereka berganti langganan, Apple akan mengelola transisi secara otomatis.
Mengapa Kelompok Langganan Penting?
Judul Bagian “Mengapa Kelompok Langganan Penting?”Kelompok langganan memungkinkan:
- Struktur Harga Berjenjang: Menawarkan paket dasar, premium, dan ultimate
- Durasi Berbeda: Pilihan bulanan, tahunan, dan kekal
- Logika Perubahan Pembayaran: Pengelolaan otomatis perubahan langganan
- Pengelolaan yang Sederhana: Mengelompokkan langganan terkait bersama
Level Langganan
Judul bagian “Level Langganan”Di dalam kelompok, setiap langganan harus dinilai dari nilai tertinggi (tingkat 1) hingga nilai terendah. Penilaian ini menentukan bagaimana perubahan langganan diklasifikasikan:

Level Contoh
Section berjudul “Level Contoh”Level 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)
- Biaya Tahunan Dasar ($29,99/tahun)
- Biaya Bulanan Standar ($4,99/bulan)
Jenis Perubahan Langganan
Bab berjudul “Jenis Perubahan Langganan”Apple secara otomatis mengelola tiga jenis perubahan langganan berdasarkan tingkat ranking:
1. Upgrade
Bab berjudul “1. Upgrade”Mengalihkan ke langganan tingkat lebih tinggi (misalnya, level 2 → level 1).
Behavior:
- Tidak berlaku segera
- Penerimaan pengguna 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
Judul bagian “2. Menurunkan”Mengalihkan ke langganan tingkat lebih rendah (misalnya, level 1 → level 2). Langganan tingkat lebih rendah (misalnya, level 1 → level 2).
Sifat:
- Berlaku pada tanggal tanggal perpanjangan berikutnya
- Pengguna tetap memiliki 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
Bagian berjudul “3. Crossgrade”Mengganti ke langganan lainnya di tingkat yang sama.
Sifat bergantung pada durasi:
Durasi Berbeda → Berperilaku seperti turun
- Berlaku pada tanggal perpanjangan berikutnya
- Contoh: Premium Bulanan (Level 1) → Premium Tahunan (Level 1)
Durasi Sama → Berperilaku seperti naik
- Berlaku segera
- Contoh: Premium Bulanan (Level 1) → Ultimate Bulanan (Level 1)
Membuat Kelompok Langganan
Judul bagian “Membuat Kelompok Langganan”-
Navigasikan ke Subskripsi
Di App Store Connect, pilih aplikasi Anda dan pergi ke Monetize > Subskripsi.
-
Buat Kelompok
Klik + di samping “Kelompok Subskripsi” untuk membuat kelompok baru.
-
Berikan Nama Kelompok
Pilih nama yang deskriptif yang merefleksikan subskripsi yang terkandung:
- “Akses Premium”
- “Rencana Penyimpanan Cloud”
- “Fitur Pro”
-
Tambahkan Subskripsi
Membuat kelompok, tambahkan langganan individu ke dalamnya. Setiap langganan akan memiliki peringkat tingkat.
-
Set Posisi Tingkat
Susun langganan dari nilai tertinggi (1) ke nilai terendah. Pertimbangkan:
- Langganan tahunan biasanya memiliki peringkat lebih tinggi daripada langganan bulanan
- Tingkat harga yang lebih tinggi berada di atas tingkat harga yang lebih rendah
- Tingkat ultimate/premium berada di peringkat tertinggi
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
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”Sampaikan perilaku perubahan secara 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 perbaruan], kemudian beralih ke Standar.”
Untuk Perubahan Jenis:
“Rencana Anda akan berubah ke pembayaran Tahunan pada perbaruan berikutnya pada [tanggal].”
Pengawasan Server
Judul Bagian “Pengawasan Server”Gunakan Apple’s App Store Server Notifications v2 atau backend validasi tagihan Anda sendiri untuk menggambarkan perubahan StoreKit di database Anda. Pasang pengiriman server dengan "listener" sehingga klien dan backend tetap sinkron. transactionUpdated Praktik Terbaik
Judul Bagian “Praktik Terbaik”
Organisasi GrupJudul Bagian “Organisasi Grup”
Tetapkan langganan terkait di grup yang sama- Jangan campur fitur yang tidak terkait (misalnya penyimpanan dan penghapusan iklan)
- Buat grup terpisah untuk setiap set fitur
- Strategi Peringkat Tingkat
Strategi Peringkat Tingkat
Rangking Strategi Tingkat- 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 di grup
- Indikasikan perubahan mana yang segera vs. pada masa perpanjangan
- Biarkan perubahan antar tingkat dapat dilakukan dengan mudah
Pengujian
Bagian berjudul “Pengujian”- Tes semua skenario upgrade
- Tes semua skenario downgrade
- Verifikasi perilaku crossgrade
- Periksa kejadian webhook
Skenario Umum
Judul bagian “Skenario Umum”Skenario 1: Tiga-Tingkat Rencana Bulanan
Judul bagian “Skenario 1: Tiga-Tingkat Rencana Bulanan”Level 1: Ultimate Monthly ($19.99)Level 2: Premium Monthly ($9.99)Level 3: Basic Monthly ($4.99)- Basic → Premium: Upgrade (langsung)
- Premium → Ultimate: Upgrade (langsung)
- Ultimate → Premium: Downgrade (pada masa perpanjangan)
- Basic → Ultimate: Upgrade (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: Ganti Kelas (pada perpanjangan)
- Tahunan → Bulanan: Turun Kelas (pada perpanjangan)
Skenario 3: Multi-Tier Multi-Durasi
Judul Bagian “Skenario 3: Multi-Tier 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)Konfigurasi ini menyediakan fleksibilitas maksimum sambil tetap menjaga logika naik/turun kelas yang jelas.
Pengaturan Masalah
Judul Bagian “Pengaturan Masalah”Tidak munculnya langganan di grup:
- Pastikan telah ditetapkan ke grup yang benar
- Periksa bahwa sudah dalam status ‘Siap untuk Dikirim’ minimal
- Pastikan ID produk benar
Tindakan upgrade/downgrade yang salah:
- Ulangi ranking level (1 = tingkat tertinggi)
- Pastikan tingkat langganan sesuai
- Periksa bahwa tingkat sudah ditetapkan dengan benar
Produk dari grup yang berbeda:
- Pengguna dapat mendaftar ke grup yang berbeda secara bersamaan
- Hal ini sengaja - jaga produk terkait dalam grup yang sama
getActiveProducts menampilkan langganan yang berbeda:
- Periksa apakah langganan berada di kelompok yang berbeda
- Verifikasi pengguna tidak berlangganan melalui Family Sharing
- Review 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 Membuat Kelompok Langganan iOS untuk merencanakan persetujuan toko dan distribusi, hubungkan dengan Menggunakan @capgo/native-purchases untuk kemampuan asli dalam Menggunakan @capgo/native-purchases, @capgo/capacitor-ulasan-dalam-aplikasi untuk detail implementasi dalam @capgo/capacitor-ulasan-dalam-aplikasi, Menggunakan @capgo/capacitor-ulasan-dalam-aplikasi untuk kemampuan asli dalam Menggunakan @capgo/capacitor-ulasan-dalam-aplikasi, @capgo/capacitor-pasar-asing untuk detail implementasi dalam @capgo/capacitor-pasar-asing, dan Menggunakan @capgo/capacitor-pasar-asing untuk kemampuan asli dalam Menggunakan @capgo/capacitor-pasar-asing.