Lebih lanjut ke konten

Membuat Langganan Otomatis iOS yang Berulang

GitHub

Langganan otomatis yang dapat diperbarui memberikan akses berulang kepada konten, layanan, atau fitur premium di aplikasi iOS Anda. Panduan ini akan membawa Anda melalui pembuatan langganan di App Store Connect.

Langganan otomatis yang dapat diperbarui secara otomatis diperbarui pada akhir setiap periode pembayaran hingga pengguna membatalkan. Mereka sangat cocok untuk:

  • Konten dan fitur premium
  • Pengalaman tanpa iklan
  • Penyimpanan awan dan sinkronisasi
  • Pelayanan streaming
  • Alat-alat profesional dan utilitas

Sebelum membuat langganan, Anda harus:

  1. Membuat kelompok langganan untuk mengorganisir langganan Anda
  2. Memiliki keanggotaan aktif Program Pengembang Apple
  3. Menyelesaikan informasi keuangan dan pajak di App Store Connect
  1. Arahkan ke Subskripsi

    Dalam App Store Connect, pilih aplikasi Anda dan pergi ke Monetize > Subskripsi.

    Pilih kelompok subskripsi Anda atau buat yang baru jika diperlukan.

    Arahkan ke subskripsi

  2. Buat Subskripsi Baru

    Klik ikon + di samping kelompok subskripsi Anda untuk menambahkan subskripsi baru.

  3. Masukkan Informasi Dasar

    Nama Referensi: Nama deskriptif untuk penggunaan internal Anda (tidak ditampilkan kepada pelanggan)

    • Contoh: “Premium Bulanan”, “Ultimate Tahunan”, “Rencana Dasar”

    ID Produk: Identifikasi unik untuk langganan ini (tidak dapat diubah kemudian)

    • Format: com.yourcompany.yourapp.premium_monthly
    • Pilih nama yang deskriptif, huruf kecil dengan garis bawah
    • Diperlukan untuk mengonfigurasi plugin native-purchases

    Masukkan detail langganan

  4. Konfigurasi Durasi

    Pilih durasi langganan dari pilihan yang tersedia:

    • 1 minggu
    • 1 bulan
    • 2 bulan
    • 3 bulan
    • 6 bulan
    • 1 tahun

    Jangka waktu menentukan berapa sering pengguna dikenakan tagihan.

  5. Set Up Harga

    Klik Tambah Harga Langganan Untuk mengkonfigurasi harga:

    Wilayah Dasar: Pilih pasar utama Anda (biasanya negara Anda)

    Harga: Atur harga langganan

    • Apple secara otomatis mengkonversi ke mata uang lain
    • Pilih dari tingkat harga Apple
    • Perhatikan nilai yang dianggap dan tarif pasar

    Konfigurasi harga

  6. Pengaturan Keluarga (Opsional)

    Putuskan apakah untuk mengaktifkan Pengaturan Keluarga, yang memungkinkan hingga 6 anggota keluarga untuk mengakses langganan.

    Diaktifkan jika:

    • Konten sesuai untuk pengguna keluarga
    • Kamu ingin meningkatkan nilai proporsional
    • Model bisnis kamu mendukungnya

    Jangan aktifkan jika:

    • Langganan hanya untuk penggunaan individu saja
    • Konten disesuaikan dengan pengguna
    • Anda ingin memaksimalkan pendapatan per pengguna
  7. Tambahkan Lokalisasi

    Tambahkan informasi tampilan langganan di semua bahasa yang didukung aplikasi Anda:

    Nama Tampilan Langganan: Nama yang ditampilkan kepada pelanggan (misalnya, "Premium Bulanan")

    Deskripsi: Deskripsi singkat tentang apa yang termasuk dalam langganan

    • Tetapkan singkat dan fokus pada manfaat
    • Sebutkan fitur utama
    • Manfaatkan keunggulan produk

    Tambahkan lokal

  8. Gambar Promosi App Store (Opsional)

    Unggah gambar promosi untuk langganan ini (312x390 piksel):

    • Muncul di halaman langganan App Store
    • Harus sesuai dengan desain aplikasi Anda
    • Termasuk nama langganan untuk kejelasan
  9. Simpan dan Kirim

    Klik Simpan __CAPGO_KEEP_0__ untuk membuat langganan.

    Untuk Langganan Pertama:

    • Harus disertakan dengan versi aplikasi baru
    • Termasuk dalam pengajuan App Store berikutnya
    • Tidak dapat disubmit secara independen

    Untuk Langganan Selanjutnya:

    • Dapat disubmit langsung dari halaman Langganan
    • Tidak memerlukan versi aplikasi baru
    • Tersedia setelah langganan pertama disetujui

Langganan Anda akan memiliki salah satu status berikut:

StatusDeskripsiBisa Uji?
Metadata HilangPengaturan Tidak LengkapIya (Sandbox)
Sedia DikirimSudah Selesai Tapi Belum DikirimIya (Sandbox)
Mengharapkan UlasanSudah Dikirim ke AppleYa (sandbox)
Dalam TinjauanSedang dinilai oleh AppleYa (sandbox)
Sedang DibahasBeing reviewed by AppleYes
ApprovedPerlu PerubahanYa (sandbox)

Setelah dibuat, rujuk langganan di aplikasi kamu menggunakan ID produk:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch subscription products direct from StoreKit
const { products } = await NativePurchases.getProducts({
productIdentifiers: [
'com.yourcompany.yourapp.premium_monthly',
'com.yourcompany.yourapp.premium_annual',
],
productType: PURCHASE_TYPE.SUBS,
});
products.forEach((product) => {
console.log(`${product.title}: ${product.priceString}`);
console.log(`Duration: ${product.subscriptionPeriod}`);
console.log(`Description: ${product.description}`);
});
// Purchase a subscription (StoreKit 2 automatically handles intro pricing and offers)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourcompany.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID:', transaction.transactionId);
// StoreKit receipts are included on iOS for server-side validation
await sendReceiptToBackend(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}
// Check subscription status using the store's data
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find(
(purchase) => purchase.productIdentifier === 'com.yourcompany.yourapp.premium_monthly',
);
if (premium?.isActive) {
console.log('Expires:', premium.expirationDate);
console.log('Will renew:', premium.willCancel === false);
console.log('Store state:', premium.subscriptionState);
unlockPremiumFeatures();
} else {
showPaywall();
}

Jika langganan App Store Connect kamu terkonfigurasi dengan rencana pembayaran bulanan dan komitmen 12 bulan, StoreKit dapat mengembalikan istilah harga tambahan untuk produk tersebut. Gunakan istilah-istilah tersebut untuk menampilkan biaya bulanan, harga komitmen total, dan periode komitmen penuh sebelum pembelian.

const yearlyProduct = products.find(
(product) => product.identifier === 'com.yourcompany.yourapp.premium_annual',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);
if (yearlyProduct && monthlyCommitment) {
console.log('Monthly charge:', monthlyCommitment.billingDisplayPrice);
console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);
await NativePurchases.purchaseProduct({
productIdentifier: yearlyProduct.identifier,
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
});
}

Untuk alur pembayaran penuh dan hak akses, lihat Rencana pembayaran bulanan iOS.

  • Rencana Bulanan: Batasan masuk yang lebih rendah, membentuk kebiasaan
  • Rencana Tahunan: Better value, higher LTV, lower churn
  • Berbagai Tingkat: Dasar, Premium, Ultimate untuk berbagai segment pengguna
  • Analisis Kompetitif: Mencari tahu harga aplikasi serupa
  • Pakai penamaan yang konsisten: company.app.tier_duration
  • Termasuk tingkat dan durasi dalam ID: premium_monthly, ultimate_annual
  • Hindari mengubah ID produk (mereka permanen)
  • Dokumentasikan semua ID produk untuk tim Anda
  • Aktifkan untuk aplikasi keluarga (permainan, pendidikan, hiburan)
  • Pertimbangkan dampak pada pendapatan
  • Uji perilaku berbagi secara menyeluruh
  • Komunikasikan kemampuan berbagi dalam pemasaran
  • Terjemahkan semua nama dan deskripsi langganan
  • Perhatikan perbedaan harga regional
  • Uji tampilan di semua bahasa yang didukung
  • Pilih bahasa pemasaran yang sesuai dengan budaya
  • Jaga gaya visual yang konsisten
  • Termasuk nama langganan dan keuntungan utama
  • Perbarui untuk promosi musiman
  • Match app’s overall design language

Polanya Langganan yang Umum

Judul Bagian: Pola Subskripsi Umum
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)

Multi-Tier (Baik, Lebih Baik, Terbaik)

Judul Bagian: Multi-Tier (Baik, Lebih Baik, Terbaik)
- Basic Monthly: $4.99
- Premium Monthly: $9.99
- Ultimate Monthly: $19.99
- Basic Annual: $49.99
- Premium Annual: $99.99
- Ultimate Annual: $199.99

Konsumsi + Hibrid Subskripsi

Judul Bagian: Konsumsi + Hibrid Subskripsi
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

Masalah pengaturan langganan di aplikasi:

  • Periksa ID produk sesuai dengan tepat (sensitif kasus)
  • Cek apakah langganan masuk dalam kelompok langganan
  • Pastikan ID paket aplikasi sesuai dengan App Store Connect
  • Tunggu 2-3 jam setelah membuat produk

Tidak dapat mengirimkan langganan:

  • Pastikan semua bidang yang wajib diisi (nama, deskripsi, harga)
  • Tambahkan setidaknya satu lokal
  • Pastikan informasi keuangan/pajak telah disetujui
  • Cek apakah langganan pertama (memerlukan versi aplikasi)

Opsi berbagi keluarga diaktifkan:

  • Sudah diaktifkan (tidak dapat dinonaktifkan)
  • Periksa detail langganan
  • Hubungi dukungan Apple jika terjebak

Paket harga tidak tersedia:

  • Mungkin terbatas di beberapa wilayah
  • Pilih tingkat alternatif
  • Hubungi Apple untuk pertanyaan harga

“ID Produk Tidak Valid”:

  • Harus dalam format domain yang dibalik
  • Tidak boleh mengandung spasi atau karakter khusus
  • Periksa kesalahan ketik
  • Pastikan unik di semua produk

Untuk Detail Lebih Lanjut, Lihat Referensi Dokumentasi Apple Resmi tentang Langganan Otomatis yang Diperbarui.

Teruskan dari Membuat Langganan Otomatis iOS

Judul Bagian “Teruskan dari Membuat Langganan Otomatis iOS”

Jika Anda menggunakan Membuat Langganan Otomatis iOS untuk merencanakan persetujuan toko dan distribusi, hubungkannya 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, Native Pasar @capgo/capacitor untuk detail implementasi di Native Pasar @capgo/capacitor Menggunakan Native Pasar @capgo/capacitor untuk kemampuan native di Menggunakan Native Pasar @capgo/capacitor