تتمثل إحدى طرق إتاحة المنتجات والفوائد داخل التطبيق للمستخدمين في إنشاء المنتجات التي تتم مكافأتها أو العناصر التي يتلقّاها المستخدمون بعد مشاهدة فيديو الإعلان. من خلال تقديم المنتجات التي تضم مكافآت، فإنك تسمح للمستخدمين بالحصول على المنتجات داخل التطبيق مكافآت ومزايا بدون الحاجة إلى إجراء عمليات شراء مباشرة
يوضّح هذا المستند كيفية تنفيذ وظائف خاصة بالإعلانات التي تضم مكافأة المنتجات. القسم مخطّط سير العمل في هذه الصفحة يوضح العملية.
تحديد المنتجات التي تضم مكافآت في تطبيقك
تتميّز المنتجات التي تضم مكافآت
SkuType
من إجمالي
INAPP
لضمان قدرة المستخدمين على مشاهدة إعلانات متعددة والحصول على مكافآت متعددة،
المنتجات التي يجب استهلاكها.
قبل أن تتمكّن من تقديم منتج مزوّد بمكافآت للمستخدم، يجب الحصول على
SkuDetails
المنتج. للقيام بذلك، اتصل
querySkuDetailsAsync()
مع SkuType.INAPP
كنوع المنتج.
الإفصاح عن إعلانات مناسبة للفئة العمرية
للمساعدة في تسهيل الامتثال للالتزامات القانونية المتعلّقة بالأطفال المستخدمين القاصرين، بما في ذلك قانون حماية خصوصية الأطفال على الإنترنت (قانون حماية خصوصية الأطفال على الإنترنت) واللائحة العامة لحماية البيانات (اللائحة العامة لحماية البيانات)، يجب أن يفصح تطبيقك عن الإعلانات التي يجب التعامل معها على أنّها موجّهة إلى الأطفال في الولايات المتحدة. الولايات والإعلانات التي تستهدف المستخدمين دون سن الرشد المعمول به في بلدهم. فريق مركز المساعدة يوضّح الحالات التي يجب فيها وضع علامة على طلبات الإعلانات الموجّهة إلى الأطفال العلاج ومتى يجب ضَع علامة عليها للإشارة إلى أنّ العلامات التجارية أقل من العمر المسموح به العلاج، بالإضافة إلى الناتجة عن القيام بذلك.
عند إنشاء برنامج الفوترة في تطبيقك، ضَع في اعتبارك ما إذا كان الإعلان الذي يضم مكافأة
يجب التعامل مع الطلبات على أنها موجّهة إلى الأطفال أو ما إذا كان يجب توجيهها
للمستخدمين دون سن الرشد. إذا كان يجب أن تحتوي طلبات الإعلان على هذه
القيود المفروضة، عليك طلب
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 Billing Library الفيديو المرتبط
حاصل على مكافأة، أي إذا حصل RewardResponseListener
على
responseCode
من إجمالي
BillingResponse.OK
—أنت
بدء تدفق الفوترة.
يمكنك بدء تشغيل الإعلانات لمنتج يضم مكافأة من خلال الاتصال
launchBillingFlow()
،
كما تفعل مع جميع الأنواع الأخرى من المحتوى داخل التطبيق
المنتجات. على الرغم من أن
إذا لم يُجرِ المستخدم عملية شراء مباشرة للحصول على منتج مزوّد بمكافآت،
إلى تفعيل تدفق الفوترة حتى يتمكن المستخدم من الحصول على
المنتج.
استخدام عملية الشراء
لإبلاغ عميل الفوترة بأنّ المستخدم قد تلقّى مكافأة واستهلكها
المنتج، فيمكنك التعامل مع
عملية شراء في
مستمع عميل الفوترة
onPurchasesUpdated()
. يُرجى العِلم أنّه يجب استخدام عمليات الشراء التي تضم مكافآت.
اختبار المنتجات التي تضم مكافآت
لاختبار طريقة تحميل تطبيقك لإعلانات الفيديو وتوفير المنتجات التي تضم مكافآت للمستخدمين، يُرجى اتّباع الخطوات التالية: الاستفادة من المختبِرين المرخَّصين، الذين يتلقّون بشكلٍ تلقائي إعلانات اختبارية بدلاً من أخرى. لمعرفة كيفية إعداد حسابات لهؤلاء المختبِرين، يمكنك الاطّلاع على مقالة اختبار حساب من Google تطبيق "الفوترة في Play"
يمكنك أيضًا استخدام منتج android.test.reward
من خلال طريقة اختبار أخرى.
رقم التعريف هذا المنتج المحدّد هو اسم محجوز في خدمة "الفوترة في Google Play"، وبالتالي
لا تحتاج إلى إضافته إلى قائمة المنتجات داخل التطبيق في Play Console.
تنبيه: عند اختبار المنتجات التي تضم مكافآت في تطبيقك، لا تستخدم هذه المنتجات. المنتجات الفعلية وإلا فقد يتم وضع علامة على حسابك باعتباره محتوى غير مرغوب فيه أو حساب احتيالي.
ولكن عند الانتهاء من الاختبار، تأكد من استبدال
android.test.reward
بمعرّفات المنتجات الخاصة بمكافأتك الفعلية
منتجات قبل نشر تطبيق الإصدار العلني للمستخدمين.
مخطّط بياني لسير عمل المنتجات التي تضم مكافأة
ويوضّح مخطَّط التسلسل البياني التالي كيف يمكن للمستخدم وتطبيقك تعمل Google Play Billing Library معًا لعرض إعلان فيديو ومنح إذن وصول المستخدم إلى منتج مزوّد بمكافآت: