Zum Inhalt springen

iOS-Monatsverpflichtung-Billigungsplä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 eines jährlichen Vertrags 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-Version, die StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standardabrechnungsoption für Geräte oder Verkaufsstellen auf, die keine Verpflichtungspreisbedingungen zurückgeben.

Aufrufen getProducts() Kontext: HTML-Textfragment aus einem längeren Capgo-UI-String (Elternschlüssel `appflow_migration_step2`). Seite/Bereich: Appflow-Vergleich / Migration-Marketingtext. Rolle: Website-Text. Gesehen in: Seite ionic-appflow.astro. Capgo-Produkt-/Marken- und Entwicklertrems werden genau beibehalten. Nachrichtenschlüssel `appflow_migration_step2` (Appflow-Migration-Schritt2). 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',
);

Zur Zwischenablage kopieren

Anstelle der festen Preise die vom Laden bereitgestellten Werte rendern:Feld
billingDisplayPriceVerwenden Sie es für
billingPeriodDer wiederkehrende Abrechnungsbetrag, der dem Benutzer angezeigt wird, z.B. der monatliche Betrag.
commitmentInfo.priceStringDer Gesamtbetrag der monatlichen Verpflichtung, formatiert für den Benutzer in seinem Laden.
commitmentInfo.periodDie gesamte Verpflichtungszeit.
subscriptionOffersEinleitende oder werbliche Angebote, die der Preisvereinbarung beigefügt sind.

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

Nur verwenden, wenn Sie explizit die Standard-Vorauszahlungsabrechnungsplan auswählen müssen. Wenn Sie dies billingPlanType: 'upFront' vergessen, verwendet StoreKit seine Standardkaufverhaltensweise für das Produkt. billingPlanTypeKaufe den Monatlichen Verpflichtungsplan

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 Erneuerungsinformationen können den nächsten Verpflichtungszustand enthalten:

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 Verwenden Sie

Zur Erklärung des vollständigen Verpflichtungszeitplans für den Kunden.

App Store Review Notes
  • Abschnitt mit dem Titel „App Store Review Notes“
  • Zeigen Sie sowohl den wiederkehrenden Abrechnungspreis als auch den Gesamtpreis der Verpflichtung vor dem Kauf an.
  • Machen Sie die Verpflichtungszeit explizit nahe dem Kaufbutton. product.title, product.priceString, pricingTerms[].billingDisplayPriceVerwenden Sie pricingTerms[].commitmentInfo.priceString , und
  • von StoreKit anstatt von festgelegten Preisen.
Zugehörige Anleitungen

Wenn Sie iOS-Monatsverpflichtungsbilanzpläne zum Planen von Zahlungen und Kaufleistungen verwenden, verbinden Sie sie 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 Implementierungsdetails im Zahlungssystem @capgo/native-purchases für die Implementierungsdetails in @capgo/native-purchases und Einstieg für die Implementierungsdetails in Einstieg.