הוספת תכונות ספציפיות למוצרים מתגמלים

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

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

איך מזהים מוצרים במתנה באפליקציה

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

לפני שמציעים למשתמש מוצר מתגמל, צריך לקבל את SkuDetails למוצר. כדי לעשות את זה, מתקשרים אל querySkuDetailsAsync() עם SkuType.INAPP כסוג המוצר.

הצהרה על מודעות שמתאימות לצפייה בכל הגילאים

כדי לעזור לכם לעמוד בחובות משפטיות שקשורות לילדים ולמשתמשים מתחת לגיל, כולל חוק הגנת הפרטיות של ילדים באינטרנט (COPPA) והתקנה הכללית להגנה על מידע (GDPR), אתם צריכים להצהיר באפליקציה אילו מודעות מיועדות לילדים בארצות הברית ואילו מודעות מיועדות למשתמשים מתחת לגיל הרלוונטי להסכמה במדינה שלהם. במרכז העזרה של AdMob מוסבר מתי צריך לתייג את הבקשות להצגת מודעות בתג התאמה לילדים (TFCD) ומתי צריך לתייג אותן בתג משתמשים מתחת לגיל ההסכמה (TFUA), וגם מה ההשפעות של התיוג.

כשיוצרים את לקוח החיוב של האפליקציה, צריך להחליט אם הבקשות להצגת מודעות מתגמלות צריכות להיות מיועדות לתוכן לילדים או למשתמשים מתחת לגיל ההסכמה. אם רוצים שהגבלות כאלה יחולו על הבקשות להצגת מודעות, צריך להפעיל את השיטות setChildDirected() ו-setUnderAgeOfConsent() ולהעביר לכל שיטה את הערכים המתאימים.

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

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

טעינה של מודעות וידאו

לפני שמציגים למשתמש אפשרות לצפות במודעת וידאו כדי לקבל מוצר מתגמל, צריך לטעון את הסרטון. כדי לעשות זאת, יוצרים אובייקט RewardLoadParams ומשייכים אותו לאובייקט SkuDetails שמייצג את המוצר במתנה. לאחר מכן, קוראים לשיטת loadRewardedSku() של לקוח החיוב, ומעבירים את האובייקט RewardLoadParams ואת האובייקט RewardResponseListener.

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

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

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

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

בקטע הקוד הבא אפשר לראות את התהליך של טעינת מודעת וידאו שמופעלת לפני שהמשתמש מקבל את המוצר המתגמל:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

הענקת רכישות מתגמלות למשתמשים

אם ספריית החיובים ב-Google Play טוענת בהצלחה את הסרטון שמשויך למוצר במתנה – כלומר, אם הפונקציה RewardResponseListener מקבלת את הערך responseCode של BillingResponse.OK – אפשר להפעיל את רצף פעולות החיוב.

כדי להתחיל להציג מודעות למוצר מתגמל, צריך להתקשר אל launchBillingFlow(), כמו שמתקשרים אל כל סוגי המוצרים האחרים בתוך האפליקציה. גם אם המשתמש לא מבצע רכישה ישירה כדי לקבל מוצר במתנה, עדיין צריך להפעיל את רצף פעולות החיוב כדי שהמשתמש יוכל לקבל את המוצר ולהשתמש בו.

לצרוך את הרכישה

כדי להודיע ללקוח החיוב שהמשתמש קיבל מוצר עם תגמול ומימש אותו, צריך לטפל ברכישה בשיטה onPurchasesUpdated() של מאזין לקוח החיוב. חשוב לדעת: צריך לממש רכישות מתגמלות.

בדיקת מוצרים במתנה

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

שיטה נוספת לבדיקה היא שימוש במזהה המוצר android.test.reward. המוצר הספציפי הזה הוא שם שמור בחיוב ב-Google Play, ולכן לא צריך להוסיף אותו לרשימת המוצרים בתוך האפליקציה ב-Play Console.

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

אבל כשמסיימים את הבדיקה, חשוב להחליף את android.test.reward במזהי המוצרים של המוצרים האמיתיים עם התגמול לפני שמפיצים את אפליקציית הייצור למשתמשי הקצה.

תרשים של תהליך העבודה של מוצר במתנה

בתרשים הרצף הבא מוצג איך המשתמש, האפליקציה וספריית החיוב של Google Play פועלים יחד כדי להציג מודעת וידאו ולאפשר למשתמש גישה למוצר עם תגמול:

תרשים רצף שמציג את הפרוטוקול של מוצרים עם תמורה
איור 1. שלבים להשלמת רכישה של מוצר עם תגמול באמצעות חיוב ב-Google Play