Zum Inhalt springen

iOS-Monatliche Verpflichtungsabrechnungspläne

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 das laufende Betriebssystem diese Abrechnungsplan unterstützen,

enthält die Preisthemen, ermöglicht die Auswahl des monatlichen Abrechnungsplans bei der Kaufabwicklung und liefert Informationen zu Verpflichtungen und Wiederholungsdaten bei Transaktionen und Wiederholungsdaten.

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
  • Abschnitt mit dem Titel „Anforderungen“
  • Build the iOS app with an Xcode SDK that contains StoreKit pricingTerms Bauen Sie die iOS-App mit einem Xcode __CAPGO_KEEP_0__ auf, der StoreKit enthält, billingPlanType.
  • und führen Sie sie auf einem iOS-System aus, das StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standardrechnungsoption für Geräte oder Geschäftsstellen, die keine Verpflichtungspreisvereinbarungen zurückgeben.

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

Stellen Sie die vom Laden bereitgestellten Werte anstelle von festgelegten Preisen dar:

FeldVerwenden Sie es für
billingDisplayPriceDer wiederkehrende Rechnungsbetrag, der dem Benutzer angezeigt wird, z. B. der monatliche Betrag.
billingPeriodDer Rechnungszyklus für den angezeigten Rechnungspreis.
commitmentInfo.priceStringDer Gesamtaufstockungspreis im Format für das Benutzer-Shopfenster.
commitmentInfo.periodDie gesamte Aufstockungsperiode.
subscriptionOffersEinführende oder werbliche Angebote, die der Preisbegriff beiliegen.

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 den monatlichen Aufstockungsplan 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 nur dann, wenn Sie die Standard-Basis-Beschaffungsplan explizit auswählen müssen. Wenn Sie dies billingPlanType: 'upFront' StoreKit verwendet dann sein Standardkaufverhalten für das Produkt. billingPlanTypeTip

Auf die Zwischenablage kopieren

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);
}

Wiederholungsinfo kann den nächsten Verpflichtungsstatus 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. Verwenden Sie commitmentInfo.expirationDate um die vollständige Verpflichtungszeitraum zum Kunden zu erklären.

  • Zeigen Sie sowohl den wiederkehrenden Abrechnungspreis als auch den Gesamtaufwand 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 festgelegten Preisen.
  • Geben Sie die Wiederherstellung von Kaufleistungen und die Verwaltung von Abonnementaktionen auf der Bezahlwand oder dem Kontoscreen an.