Zum Inhalt springen

iOS-Monatsverpflichtungsabrechnungspläne

GitHub

Apple unterstützt Abonnements, die monatlich abrechnen, während der Kunde sich für eine längere 12-monatige Laufzeit verpflichtet. Wenn StoreKit und das laufende Betriebssystem diese Abrechnungsplan unterstützen, @capgo/native-purchases erläutert die Preisbedingungen, ermöglicht Ihnen die Auswahl des monatlichen Abrechnungsplans bei der Kaufabwicklung und liefert Informationen zu 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 wünschen.

  • 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-Version, die StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standard-Billingsoption für Geräte oder Verkaufsstellen, die keine Verpflichtungspreisvereinbarungen zurückgeben.

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

Anstatt feste Preise zu verwenden, rendern Sie die vom Laden bereitgestellten Werte.

FieldFeld
billingDisplayPriceDie wiederkehrende Abrechnungshöhe, die dem Nutzer angezeigt wird, zum Beispiel der monatliche Beitrag.
billingPeriodDie Abrechnungsperiode für die angezeigte Abrechnungspreis.
commitmentInfo.priceStringDer Gesamtaufstockungspreis im Format für die Benutzereinstellung.
commitmentInfo.periodDie gesamte Aufstockungsperiode.
subscriptionOffersEinführende oder werbliche Angebote, die mit dem Preisangebot verbunden sind.

Beispiel für Paywall-Text:

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 Verpflichtung wählt, übermitteln Sie billingPlanType: 'monthly'.

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

Use billingPlanType: 'upFront' Verwenden Sie nur dann, wenn Sie die Standard-Vorauszahlungsabrechnungsperiode explizit auswählen müssen. Wenn Sie dies billingPlanType, StoreKit verwendet 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);
}

Renewal info can include the next commitment state:

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. 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.
  • Stellen Sie die Verpflichtungszeit explizit in der Nähe des Kaufknopfes dar.
  • Use product.title, product.priceString, pricingTerms[].billingDisplayPrice, und pricingTerms[].commitmentInfo.priceString von StoreKit anstatt von festgelegten Preisen.
  • Bieten Sie Wiederherstellungskauf und Verwaltung von Abonnements auf der Zahlungsseite oder dem Kontoscreen an.

Weiter mit iOS-Monatliche Verpflichtung Abrechnungsplänen

Abschnitt mit dem Titel ‘Fortsetzung von iOS-Monatsverpflichtung-Billingsplänen’

Wenn Sie ‘iOS-Monatsverpflichtung-Billingspläne’ verwenden iOS-Monatsverpflichtung-Abrechnungspläne um Zahlungen und Kaufs zu planen, verbinden Sie es mit Verwendung von @capgo/native-purchases für die native Fähigkeit in @capgo/native-purchases, Capgo Preisgestaltung zur Produktworkflow in Capgo Pricing, Zahlungssystem zur Implementierungsdetail in Zahlungssystem, @ capgo/native-purchases zur Implementierungsdetail in @ capgo/native-purchases, und Anleitung zum Starten zur Implementierungsdetail in Anleitung zum Starten.