Zum Inhalt springen

iOS-Monatsverpflichtungskostenpläne

Apple unterstützt Abonnements, die monatlich abgerechnet 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,

die Preisbedingungen offenlegt, Ihnen ermöglicht, während des Kaufs die monatliche Abrechnungsplan auszuwählen und die Verpflichtungsdaten zu Transaktionen und Wiederholungsinformationen zurückzugeben.

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
  • Konfigurieren Sie die monatliche Abrechnung mit 12-Monats-Verpflichtungsabrechnungsplan in App Store Connect oder in StoreKit Testing in Xcode.
  • Bauen Sie die iOS-App mit einem Xcode SDK , das StoreKit enthält. pricingTerms und billingPlanType.
  • Lauern Sie auf einer iOS-Version, die StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standardabrechnungsoption für Geräte oder Verkaufsstellen auf, die keine Verpflichtungspreisvereinbarungen zurückgeben.

Aufrufen getProducts() wie gewohnt. Für unterstützte iOS-Abonnementprodukte kann jeder Produktbezug 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 die angezeigte Abrechnungspreis.
commitmentInfo.priceStringDie Gesamtkommitmentpreis im Format für den Benutzer des Ladens.
commitmentInfo.periodDie gesamte Kommitmentdauer.
subscriptionOffersEinführende oder werbliche Angebote, die der Preisbegriff beiliegen.

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 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 billingPlanType: 'upFront' Verwenden Sie dies nur dann, wenn Sie explizit die Standard-Vorauszahlungsberechnung wählen müssen. Wenn Sie dies billingPlanTypeStoreKit verwendet sein Standardkaufverhalten für das Produkt.

Lesen Sie die Verpflichtungsvereinbarungs-Metadaten

Abschnitt mit dem Titel “Lesen Sie die Metadaten der Verpflichtung”

Die Transaktionen umfassen das Abrechnungsplan 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 Erneuerungsinformationen können 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 commitmentInfo.expirationDate Sie, um dem Kunden den vollständigen Verpflichtungszeitplan zu erklären.

  • Zeigen Sie sowohl den wiederkehrenden Abrechnungspreis als auch den Gesamtpreis der Verpflichtung vor dem Kauf an.
  • Machen Sie die Laufzeit des Engagements explizit nahe dem Kaufbutton.
  • Verwenden Sie product.title, product.priceString, pricingTerms[].billingDisplayPrice, und pricingTerms[].commitmentInfo.priceString aus StoreKit anstatt festgelegter Preise.
  • Bieten Sie Wiederherstellungskauf und Verwalten-Abonnement-Aktionen auf der Zahlungsseite oder dem Kontoscreen an.

Bleiben Sie bei den iOS-Monatsabonnement-Beitrittsplänen weiterhin

Abschnitt mit dem Titel „Bleiben Sie bei den iOS-Monatsabonnement-Beitrittsplänen weiterhin“

Wenn Sie die Verwendung von iOS-Monatsverpflichtungsberechnungsplänen zum Planen von Zahlungen und Kaufleistungen, verbinden Sie es mit Mit @capgo/native-purchases für die native Fähigkeit in Mit @capgo/native-purchases, Capgo Preisgestaltung für den Produktworkflow in Capgo Preisgestaltung, Zahlungssystem für die Implementierungsdetails in Zahlungssystem, @capgo/native-purchases für die Implementierungsdetails in @capgo/native-purchases, und Anleitung zum Starten für die Implementierungsdetails in Getting Started.