Zum Inhalt springen

iOS-Monatliche Verpflichtungsbilligungspläne

GitHub

Apple unterstützt Abonnements, die monatlich abrechnen, während der Kunde sich für eine längere 12-monatige Laufzeit verpflichtet. @capgo/native-purchases Wenn StoreKit und das laufende Betriebssystem diese Abrechnungsplan unterstützen, werden die Preisbedingungen offenbart, Sie können die monatliche Abrechnungsplan während des Kaufs auswählen und Informationen zu Transaktionen und Wiederholungsinformationen zurückgeben.

Verwenden Sie dies für jährliche Abonnementangebote, bei denen die Nutzer monatliche Zahlungen bevorzugen, aber Sie noch die Bindung und Vorhersehbarkeit einer jährlichen Laufzeit wollen.

Anforderungen

Anforderungen
  • Konfigurieren Sie den monatlichen Abrechnungsplan mit 12-monatiger Verpflichtung in App Store Connect oder in StoreKit Testing in Xcode.
  • Bauen Sie die iOS-App mit einem Xcode SDK auf, der StoreKit enthält pricingTerms und billingPlanType.
  • Laufen Sie auf einem iOS-Betriebssystem, das StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standardabrechnungsoption für Geräte oder Verkaufsstellen auf, die keine Verpflichtungspreisbedingungen zurückgeben.

Aufrufen getProducts() Als üblich. Für unterstützte iOS-Abonnementprodukte kann jeder Produkt jede pricingTerms.

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['com.example.app.premium.yearly'],
productType: PURCHASE_TYPE.SUBS,
});
const premiumYearly = products.find(
(product) => product.identifier === 'com.example.app.premium.yearly',
);
const monthlyCommitment = premiumYearly?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);

Stattdessen die vom Laden bereitgestellten Werte rendern:

FeldVerwenden Sie es für
billingDisplayPriceDer wiederkehrende Abrechnungsbetrag, der dem Benutzer angezeigt wird, z.B. der monatliche Betrag.
billingPeriodDie Abrechnungsperiode für die angezeigte Abrechnungspreis.
commitmentInfo.priceStringDer Gesamtbetrag der Verpflichtung, formatiert für den Benutzer in seinem Laden.
commitmentInfo.periodDie gesamte Verpflichtungszeit.
subscriptionOffersEinführende oder werbliche Angebote, die der Preisbegriff beiliegen.

Beispiel für eine Paywall-Kopie:

function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) {
const total = term.commitmentInfo?.priceString;
return total
? `${term.billingDisplayPrice} billed monthly, ${total} total commitment`
: term.billingDisplayPrice;
}

Wenn der Benutzer den monatlichen Verpflichtungsplan auswählt, übermitteln Sie billingPlanType: 'monthly'.

const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.example.app.premium.yearly',
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
appAccountToken: userStoreUuid,
});

Verwenden Sie billingPlanType: 'upFront' Verwenden Sie nur dann, wenn Sie explizit die Standard-Vorauszahlungsabrechnung planen müssen. Wenn Sie dies billingPlanTypevermeiden, verwendet StoreKit seine Standardkaufverhaltensweise für das Produkt.

Transaktionen enthalten die Abrechnungspläne und den Fortschritt der Verpflichtung, wenn StoreKit es liefert:

if (transaction.billingPlanType === 'monthly') {
console.log('Current billing period:', transaction.commitmentInfo?.billingPeriodNumber);
console.log('Total billing periods:', transaction.commitmentInfo?.totalBillingPeriods);
console.log('Commitment ends:', transaction.commitmentInfo?.expirationDate);
console.log('Commitment total:', transaction.commitmentInfo?.price);
}

Die Erneuerungsdaten können den nächsten Verpflichtungszustand umfassen:

const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
onlyCurrentEntitlements: true,
});
for (const purchase of purchases) {
const commitment = purchase.renewalInfo?.commitmentInfo;
if (!commitment) continue;
console.log('Renews into another commitment:', commitment.willAutoRenew);
console.log('Next billing plan:', commitment.renewalBillingPlanType);
console.log('Next renewal date:', commitment.renewalDate);
}

Verwenden Sie die oberste Ebene expirationDate und isActive Felder für Entscheidungen über die Berechtigung. Verwenden Sie commitmentInfo.expirationDate um die vollständige Verpflichtungszeitraum zum Kunden zu erklären.

  • Zeigen Sie sowohl den wiederkehrenden Abrechnungspreis als auch den Gesamtpreis der Verpflichtung vor dem Kauf an.
  • Machen Sie die Verpflichtungszeit explizit nahe dem Kaufbutton.
  • Verwenden Sie product.title, product.priceString, pricingTerms[].billingDisplayPrice, und pricingTerms[].commitmentInfo.priceString von StoreKit anstatt von festen Preisen.
  • Bieten Sie Wiederherstellungskauf und Verwaltung von Abonnementaktionen auf der Zahlungsseite oder dem Kontoscreen an.

Wenn Sie iOS-Monatsverpflichtung-Billingspläne verwenden iOS-Monatsverpflichtung-Billingspläne um Zahlungen und Kaufsplanungen vorzunehmen, verbinden Sie sie mit Verwenden Sie @capgo/native-purchases für die native Fähigkeit in Verwenden Sie @capgo/native-purchases Capgo-Preise Capgo-Preise für das Produktworkflow in Capgo-Preise Zahlungssystem für die Implementierungsdetails im Zahlungssystem @capgo/native-purchases für die Implementierungsdetails in @capgo/native-purchases und Einstieg für die Implementierungsdetails in Einstieg.