Zum Inhalt springen

iOS-Monatsverpflichtungsbilligungspläne

GitHub

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

Verwenden Sie dies für jährliche Abonnementangebote, bei denen die Nutzer monatliche Zahlungen bevorzugen, aber Sie trotzdem die Bindung und Vorhersehbarkeit eines verpflichteten jährlichen Begriffs wollen.

  • Konfigurieren Sie die monatliche Zahlung mit einem 12-Monats-Verpflichtungsabrechnungsplan in App Store Connect oder in StoreKit Testing in Xcode.
  • Bauen Sie die iOS-App mit einem Xcode SDK auf, das StoreKit enthält pricingTerms und billingPlanType.
  • Laufen Sie auf einer iOS-Version aus, die StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standard-Zahlungsoption für Geräte oder Verkaufsstellen auf, die keine Verpflichtungspreisvereinbarungen zurückgeben.

Aufruf getProducts() wie gewohnt. Für unterstützte iOS-Abonnementprodukte kann jeder Produkt ein 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',
);

Statt der festen Preise 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 den angezeigten Abrechnungspreis.
commitmentInfo.priceStringDie Gesamtkommitmentpreise im Format für den Benutzer des Ladens.
commitmentInfo.periodDie gesamte Kommitmentdauer.
subscriptionOffersZusätzliche Einführungs- oder Werbeangebote, die der Preisbegriff zugeordnet sind.

Beispiel für 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 die monatliche Verpflichtungsvereinbarung 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 auswählen müssen. Wenn Sie dies billingPlanTypeStoreKit verwendet seine Standardkaufverhaltensweise für das Produkt.

Transaktionen umfassen das Abrechnungsplan und den Fortschritt des Abschlusses, 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 Erneuerungsinformationen können den nächsten Abschlusszustand 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 obersten Ebene expirationDate und isActive Felder für Entscheidungen über die Berechtigung. Verwenden Sie commitmentInfo.expirationDate um dem Kunden den vollständigen Abschlusszeitplan zu erklären.

  • Zeige sowohl den wiederkehrenden Abrechnungspreis als auch die Gesamtkommitmentkosten vor dem Kauf.
  • Mache die Kommitmentdauer explizit in der Nähe des Kaufknopfes explizit.
  • Verwende product.title, product.priceString, pricingTerms[].billingDisplayPrice, und pricingTerms[].commitmentInfo.priceString von StoreKit anstatt der festen Preise.
  • Biete Wiederherstellungskauf und Verwalten-Abonnement-Aktionen auf der Zahlungsanzeige oder dem Konto-Bildschirm an.

Wenn Sie " iOS-Monatsverpflichtung-Billing-Pläne zum Planen von Zahlungen und Kaufleistungen verwenden, verbinden Sie es mit Mit @capgo/native-purchases für die native Fähigkeit in Mit @capgo/native-purchases, Capgo Preisgestaltung für das Produktworkflow in Capgo Preisgestaltung, Zahlungssystem für die Implementierungsdetail in Zahlungssystem, @capgo/native-Einkäufe für die Implementierungsdetails in @capgo/native-Einkäufe, und Einstieg für die Implementierungsdetails in Einstieg.