הטמעת תקופת חסד לחיוב מנוי שנכשל

כאשר חיוב מנוי נכשל, משתמשים מאבדים גישה לתוכן, מה שפוגע בשימור הקהל. אנו מיישמים מנגנון תקופת חסד turnkey—מהגדרה בקונסולות App Store ו-Google Play ועד אימות בצד השרת. הצוות שלנו מבטיח פעילות יציבה ותמיכה מתמשכת, כך שהאפליקציה שלך עומדת בדרישות הפלטפורמות ושומרת על מנויים.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הטמעת תקופת חסד לחיוב מנוי שנכשל
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

משתמש לא מבחין בחיוב שנכשל — יום לאחר מכן הוא ננעל מחוץ לחשבון, ושימור הלקוחות יורד ב-30% בכשל הראשון. תקופת חסד נותנת 3–16 ימים לתיקון ללא אובדן גישה. אנו מיישמים מנגנון תקופת חסד במפתח מלא: מהפעלה בקונסולות ועד אימות בצד השרת, כך שהאפליקציה שלך עומדת בהנחיות App Store ו-Google Play.

כיצד תקופת החסד משפיעה על ההכנסות?

ללא תקופת חסד, כל חיוב שנכשל מאבד מנוי. גם אם הם חוזרים, החוויה השלילית מפחיתה את ה-LTV. לפי דוח RevenueCat, תקופת חסד נכונה מעלה את השימור ב-18% בממוצע, שב-9.99$ לחודש מתורגם ל-1.80$ הכנסה נוספת למשתמש בחודש. במקרה בוחן עם בסיס של 10,000 מנויים, הוספת תקופת חסד הניבה 80,000$ נוספים בשנה — שיפור של פי 2.3 בשימור לעומת נעילה מיידית. זו השפעה ישירה על השורה התחתונה ללא שינוי במחיר.

מהי תקופת חסד וכיצד להפעיל אותה?

תקופת חסד היא השלב לאחר חיוב שנכשל שבו המנוי נשאר פעיל, ו-Apple או Google ממשיכות לנסות. המשתמש רואה תוכן אך מקבל אזהרה עדינה. היא מופעלת בקונסולות הפיתוח.

iOS: הגדרה ב-App Store Connect

עבור אל App Store Connect → מנויים → בחר קבוצה → תקופת חסד. אפשרויות: 3, 6 או 16 ימים. לאחר ההפעלה, Apple שולחת אוטומטית את הסטטוס inGracePeriod ב-StoreKit. טפל בזה בצד הלקוח:

import StoreKit

func checkSubscriptionStatus(productId: String) async -> SubscriptionAccessLevel {
    guard let product = try? await Product.products(for: [productId]).first,
          let statuses = try? await product.subscription?.status else {
        return .notSubscribed
    }
    
    for status in statuses {
        switch status.state {
        case .subscribed:
            return .active
        case .inGracePeriod:
            // Списание не прошло, но grace period активен
            // Показываем мягкое предупреждение, не блокируем контент
            return .gracePeriod
        case .inBillingRetryPeriod:
            // Grace period истёк, Apple продолжает попытки списания (до 60 дней)
            // Контент НЕ доступен
            return .billingRetry
        case .expired, .revoked:
            return .notSubscribed
        default:
            continue
        }
    }
    return .notSubscribed
}

enum SubscriptionAccessLevel {
    case active, gracePeriod, billingRetry, notSubscribed
}

הודעות App Store Server Notifications V2 משכפלות את אירוע import StoreKit func checkSubscriptionStatus(productId: String) async -> SubscriptionAccessLevel { guard let product = try? await Product.products(for: [productId]).first, let statuses = try? await product.subscription?.status else { return .notSubscribed } for status in statuses { switch status.state { case .subscribed: return .active case .inGracePeriod: // Списание не прошло, но grace period активен // Показываем мягкое предупреждение, не блокируем контент return .gracePeriod case .inBillingRetryPeriod: // Grace period истёк, Apple продолжает попытки списания (до 60 дней) // Контент НЕ доступен return .billingRetry case .expired, .revoked: return .notSubscribed default: continue } } return .notSubscribed } enum SubscriptionAccessLevel { case active, gracePeriod, billingRetry, notSubscribed } עם סיבה DID_FAIL_TO_RENEW. השרת צריך לטפל בשני הערוצים לאמינות.

Android: הגדרה ב-Google Play Console

ב-Google Play Console, בחר מוצר → מנויים → תקופת חסד. משך הזמן תלוי במחיר ובאזור: בדרך כלל 1–7 ימים. Google שולחת הודעת RTDN IN_GRACE_PERIOD:

fun handleSubscriptionNotification(notification: SubscriptionNotification) {
    when (notification.notificationType) {
        SubscriptionNotification.SUBSCRIPTION_IN_GRACE_PERIOD -> {
            showGracePeriodWarning()
        }
        SubscriptionNotification.SUBSCRIPTION_EXPIRED -> {
            revokeAccess()
        }
    }
}

השרת מקבל את ההודעה דרך Pub/Sub ומעדכן את הסטטוס במסד הנתונים. הלקוח יכול לבדוק דרך SUBSCRIPTION_IN_GRACE_PERIOD ו-fun handleSubscriptionNotification(notification: SubscriptionNotification) { when (notification.notificationType) { SubscriptionNotification.SUBSCRIPTION_IN_GRACE_PERIOD -> { showGracePeriodWarning() } SubscriptionNotification.SUBSCRIPTION_EXPIRED -> { revokeAccess() } } } , אך לא מומלץ להסתמך רק על הלקוח.

מה להציג למשתמשים במהלך תקופת החסד

עיקרון מפתח: אל תחסום תוכן, אך ספק אזהרה עדינה. חומת תשלום אגרסיבית במהלך תקופת חסד היא חוויית משתמש גרועה ומפרה את סעיף 4.2 בהנחיות App Store.

// SwiftUI-баннер
if subscriptionStatus == .gracePeriod {
    GracePeriodWarningBanner(
        message: "Не удалось списать оплату. Обновите данные карты, чтобы сохранить доступ.",
        actionTitle: "Управление подпиской",
        action: {
            openManageSubscriptions()
        }
    )
}

func openManageSubscriptions() {
    Task {
        try? await AppStore.showManageSubscriptions(in: windowScene)
    }
}

ב-Android — באנר דומה עם כפתור להפניה ל-Google Play לשינוי אמצעי התשלום.

השוואת תקופות חסד: iOS לעומת Android

פרמטר iOS (StoreKit 2) Android (Google Play Billing)
משך זמן 3, 6 או 16 ימים (ניתן להגדרה) 1–7 ימים (תלוי במחיר ובאזור)
סטטוס לקוח Purchase.purchaseState isAutoRenewing
סטטוס לאחר פקיעת תוקף // SwiftUI-баннер if subscriptionStatus == .gracePeriod { GracePeriodWarningBanner( message: "Не удалось списать оплату. Обновите данные карты, чтобы сохранить доступ.", actionTitle: "Управление подпиской", action: { openManageSubscriptions() } ) } func openManageSubscriptions() { Task { try? await AppStore.showManageSubscriptions(in: windowScene) } } (עד 60 יום) inGracePeriod (מיידית)
בדיקת לקוח SUBSCRIPTION_IN_GRACE_PERIOD inBillingRetryPeriod + SUBSCRIPTION_EXPIRED
הודעות שרת App Store Server Notifications V2 Real-Time Developer Notifications (RTDN)

אימות בצד השרת: למה זה חשוב

בדיקות בצד הלקוח דרך StoreKit נוחות לממשק המשתמש, אך לא צריכות להיות מקור האמת היחיד. משתמש עשוי לפתוח את האפליקציה ימים לאחר מכן — מטמון ה-StoreKit אולי לא עודכן. השרת מקבל הודעות אמינות ומאחסן את הסטטוס בפועל.

תהליך עבודה עם App Store Server Notifications V2

  1. Apple שולחת בקשת POST לנקודת הקצה שלך עם סוג Product.SubscriptionInfo.Status וסיבה Purchase.purchaseState.
  2. השרת מאמת את החתימה ומעדכן את השדה isAutoRenewing במסד הנתונים ל-DID_FAIL_TO_RENEW.
  3. לקוח הנייד מבקש IN_GRACE_PERIOD בעת ההפעלה ומקבל את הסטטוס הנוכחי.
  4. אם תקופת החסד פגה, Apple שולחת subscription_status, השרת משנה את הסטטוס ל-grace_period וחוסם גישה בבקשה הבאה.

אותו דבר עבור Android עם Real-Time Developer Notifications: /me/subscription ו-GRACE_PERIOD_EXPIRED.

טעויות יישום אופייניות

  • חסימת תוכן מיידית לאחר חיוב שנכשל (התעלמות מתקופת חסד).
  • אי בדיקת סטטוס expired — תוכן פתוח או סגור בצורה שגויה.
  • חוסר אימות בצד השרת — משתמשים עשויים לקבל גישה ללא מנוי.
  • חומת תשלום אגרסיבית מדי במהלך תקופת חסד (הפרת הנחיות).

תוצרים ותהליך הפרויקט

אנו מבטיחים פתרון במפתח מלא עם ניסיון אינטגרציה מוסמך. הנה מה שכלול:

  • ביקורת על הלוגיקה הנוכחית של מנויים והגדרות קונסולת הפיתוח.
  • הפעלת תקופת חסד ב-App Store Connect וב-Google Play Console.
  • טיפול בסטטוס בצד הלקוח (Swift/Kotlin) עם באנרים בממשק המשתמש.
  • אינטגרציה של הודעות שרת (App Store Server Notifications V2 / RTDN).
  • תיעוד של תהליך העבודה המיושם.
  • גישה ללוח המעקב שלנו.
  • הדרכת צוות על ניהול מחזור חיי מנויים.
  • 30 ימי תמיכה לאחר ההשקה.
ציר זמן לפרויקט (לחץ להרחבה) - צד לקוח עם לוגיקת ממשק משתמש: **2–3 ימים**. - מחזור מלא עם טיפול בהודעות שרת: **4–5 ימים**. - בדיקות עומס ומעקב: **יום אחד**.

העלות מחושבת באופן אישי. צור קשר להערכת פרויקט. קבל ייעוץ ממהנדס עם 10+ שנות ניסיון במנויים לנייד — מובטח שיפור שימור של 18% או החזר כספי.