Membuat Kelompok Pembelian iOS
Copas prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Kelompok langganan sangat penting untuk mengorganisir 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 antara. 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: Tawarkan rencana dasar, premium, dan ultimate
- Durasi yang berbedaPilihan bulanan, tahunan, dan kekalahan
- Logika peningkatan/turunanPengaturan otomatis perubahan langganan
- Pengelolaan yang disederhanakanPengelompokan langganan terkait
Level Langganan
Bab berjudul “Level Langganan”Pada suatu kelompok, setiap langganan harus dinilai dari nilai tertinggi (tingkat 1) hingga nilai terendah. Penilaian ini menentukan bagaimana perubahan langganan diklasifikasikan:

Contoh Level
Bab berjudul “Contoh Level”Tingkat 1 (Nilai Tertinggi)
- Premium Tahunan ($99,99/tahun)
- Ultimate Bulanan ($19,99/bulan)
Level 2 (Nilai Menengah)
- Standar Tahunan ($49,99/tahun)
- Premium Bulanan ($9,99/bulan)
Level 3 (Nilai Terendah)
- Dasar Tahunan ($29,99/tahun)
- Standar Bulanan ($4,99/bulan)
Jenis Perubahan Langganan
Judul Bagian: Tipe Perubahan 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:
Mengambil efek
- langsung Pengguna menerima
- pengembalian prorata __CAPGO_KEEP_0__ 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. Downgrade
Bab 2. DowngradeBerpindah ke langganan yang lebih rendah (misalnya level 1 → level 2). Behavior:
Berlaku pada
- tanggal perpanjangan berikutnya Takes effect at
- Pengguna tetap memiliki langganan saat ini hingga periode berakhir
- Langganan baru akan dimulai secara otomatis setelah berakhirnya masa berlaku
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 3. CrossgradeMengganti ke langganan lainnya di tingkat yang sama.
Perilaku tergantung pada durasi:
Durasi Berbeda → Berperilaku seperti penurunan
- Terdapat efek pada tanggal perpanjangan berikutnya
- Contoh: Premium Bulanan (Level 1) → Premium Tahunan (Level 1)
Durasi yang sama → Berperilaku seperti upgrade
- Terdapat efek segera
- Contoh: Premium Bulanan (Level 1) → Ultimate Bulanan (Level 1)
Membuat Kelompok Langganan
Judul bagian “Membuat Kelompok Langganan”-
Navigasikan ke Langganan
Pilih aplikasi Anda di App Store Connect, kemudian pergi ke Monetize > Langganan.
-
Membuat Kelompok
Klik + Klik tombol berikutnya di samping “Kelompok Langganan” untuk membuat kelompok baru.
-
Pilih Nama Kelompok
Pilih nama yang deskriptif yang merefleksikan langganan yang terkandung:
- “Akses Premium”
- “Rencana Penyimpanan di 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 lebih tinggi daripada bulanan
- Tingkat harga yang lebih tinggi ranking di atas yang lebih rendah
- Tingkat ultimate/premium ranking tertinggi
Menggunakan di Aplikasi Anda
Bab berjudul “Menggunakan di Aplikasi Anda”Plugin pembelian asli 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
Bab berjudul “Mengelola Perubahan Langganan”Mendeteksi Tipe Perubahan
Bab 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 Pengguna”Selalu 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 perpanjangan], kemudian beralih ke Standard.”
For Crossgrade:
“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 pembelian Anda sendiri untuk menggandakan perubahan StoreKit di database Anda. Pasang pemberitahuan server dengan transactionUpdated Pengguna dan backend tetap sinkron.
Praktik Terbaik
Bagian Judul “Praktik Terbaik”Organisasi Kelompok
Bagian Judul “Organisasi Kelompok”- Simpan 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
Bagian Judul “Strategi Peringkat Level”- Langganan tahunan → Level lebih tinggi daripada bulanan (untuk tingkat yang sama)
- Tingkat harga yang lebih tinggi → Level lebih tinggi
- Perhatikan nilai, bukan hanya harga
Pengalaman Pengguna
Bab berjudul “Pengalaman Pengguna”- Tampilkan langganan saat ini secara jelas
- Tampilkan semua pilihan yang tersedia di grup
- Indikasikan perubahan mana yang segera vs. pada masa perbaharuan
- Mudahkan pengguna untuk berganti antar paket
Pengujian
Bab berjudul “Pengujian”- Uji semua skenario peningkatan
- Uji semua skenario penurunan
- Verifikasi perilaku crossgrade
- Periksa webhook berlari
Skenario Umum
Judul bagian berjudul “Skenario Umum”Skenario 1: Tiga Tingkat Bulanan
Judul bagian berjudul “Skenario 1: Tiga Tingkat Bulanan”Level 1: Ultimate Monthly ($19.99)Level 2: Premium Monthly ($9.99)Level 3: Basic Monthly ($4.99)- Dasar → Premium: Naikkan (langsung)
- Premium → Ultimate: Naikkan (langsung)
- Ultimate → Premium: Turunkan (pada perpanjangan)
- Dasar → Ultimate: Naikkan (langsung)
Skenario 2: Rencana Durasi Campuran
Judul bagian berjudul “Skenario 2: Rencana Durasi Campuran”Level 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- Bulanan → Tahunan: Mengubah Kelas (pada perpanjangan)
- Tahunan → Bulanan: 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 naik/turun yang jelas.
Pengaturan Masalah
Judul Bagian “Pengaturan Masalah”Langganan tidak muncul di grup:
- Pastikan telah ditugaskan ke grup yang benar
- Periksa apakah sudah dalam status “Siap Dikirim” minimal
- Pastikan ID produk benar
Perilaku upgrade/downgrade yang salah:
- Tinjau ranking level (1 = tertinggi)
- Verifikasi tingkatan langganan yang masuk akal
- Periksa bahwa level yang tepat telah ditetapkan
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
- Verifikasi pengguna tidak berlangganan melalui Family Sharing
- Tinjau status langganan di App Store Connect
Sumber Daya Tambahan
Judul Bagian “Sumber Daya Tambahan”Untuk informasi lebih lanjut, silakan mengacu pada dokumentasi resmi Apple tentang kelompok langganan.
Lanjutkan dari Buat Kelompok Langganan iOS
Judul Bagian “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 native di Menggunakan @capgo/capacitor-ulasan-dalam-aplikasi, @capgo/capacitor-pasar-native untuk detail implementasi di @capgo/capacitor-pasar-native, dan Menggunakan @capgo/capacitor-pasar-native untuk kemampuan native di Menggunakan @capgo/capacitor-pasar-native.