يوضّح هذا الموضوع كيفية رصد المنتجات داخل التطبيق وتقديمها في لعبتك بعد أن يشتريها اللاعبون باستخدام نقاط Play في تطبيق Google Play.
بعد أن يستبدل المستخدمون نقاطهم في برنامج Play Points بمنتج داخل التطبيق في تطبيق Google Play، يجب تسليم العناصر على الفور في لعبتك. تعرض الصورة التالية طريقة شراء المستخدمين للعناصر باستخدام نقاط Play Points.
1. انقر على Play Points. | 1. انقر على علامة التبويب استخدام لعرض العناصر. | 2- اختَر منتجًا وانقر على استخدام النقاط لإكمال عملية الشراء. | 3- استلام المنتج |
![]() |
![]() |
![]() |
![]() |
في المثال، لا يتم تشغيل اللعبة أثناء شراء المنتج. يمكن للمستخدمين أيضًا استبدال نقاط Play Points بمنتجات حتى إذا لم تكن اللعبة مثبَّتة على أجهزتهم. لهذا السبب، يجب تصميم لعبتك لتتمكّن من التعامل مع عملية تسليم السلع داخل التطبيق من خارج متجر اللعبة.
قبل البدء
قبل رصد منتج داخل التطبيق وتقديمه، عليك إنشاء المنتج والعروض الترويجية في Play Points.
متطلبات التسليم
عند تقديم منتجات داخل اللعبة باستخدام عرض ترويجي في Play Points، يجب استيفاء المتطلبات الواردة في هذا القسم.
توقيت التسليم
عندما يستبدل أحد اللاعبين نقاط Play Points بمنتج داخل التطبيق، عليك تسليم المنتج على الفور بدون أن تطلب من اللاعب إعادة تشغيل اللعبة. في الحالات التي يجب فيها إكمال محتوى اللعبة مسبقًا، مثل إكمال برنامج تعليمي، يجب تسليم السلعة فورًا بعد ذلك.
رسالة التسليم
بعد أن يعود المستخدم إلى لعبتك بعد شراء منتج داخل التطبيق خارج اللعبة، عليك عرض تأكيد على أنّه تم منح المنتج بنجاح داخل اللعبة. يجب أن تظهر الرسالة في شكل مربّع حوار مُنبثق أو رسالة داخل اللعبة. ويجب ألا يحتاج المستخدمون إلى اتخاذ أي خطوات إضافية لتلقّي السلعة.
في ما يلي تنسيق الرسائل المطلوب:
رسالة واضحة تفيد باستلام السلعة
يجب الإشارة إلى اسم المنتج بوضوح والإشارة إلى "نقاط Play" لضمان تمكُّن المستخدمين من التمييز بينه وبين المحتوى الآخر الذي يتلقّونه.
يجب أن يتضمّن اسم السلعة أيضًا القيمة الصحيحة للسلعة إذا كانت هناك سلع مشابهة بقيم متعددة.
يجب أن يظهر مربّع الحوار المنبثق أو الرسالة أو الإشعار داخل اللعبة للمستخدم إلى أن ينقر على تأكيد مثل متابعة أو حسنًا. يجب ألا يتضمّن هذا الإشعار زر إلغاء، لأنّه يهدف فقط إلى إعلام المستخدمين بالسلعة التي تلقّوها داخل اللعبة. إذا لم يكن هناك زر تأكيد، يجب أن تظهر الرسالة للمستخدمين لمدة 3 ثوانٍ على الأقل قبل أن تختفي لضمان معرفة المستخدمين أنّهم تلقّوا السلعة.
في ما يلي مثال على رسالة:
"تم استلام المنتج! لقد حصلت على 100 جوهرة باستخدام نقاط Play Points. متابعة".
من المفترض أن يرى المستخدمون صورة متحركة أو تأكيدًا مرئيًا يعرض الزيادة في رصيدهم من العملة داخل اللعبة. إذا كان المنتج عبارة عن منتج دائم أو منتج للاستهلاك داخل التطبيق، يجب توجيه المستخدمين إلى المكان الذي تم فيه فتح المنتج أو المكان الذي يتوفّر فيه داخل اللعبة.
رصد العناصر التي تم تلقّيها خارج اللعبة
إذا كانت لعبتك تستخدم Google Play Billing Library، عليك إجراء التغييرات التالية من أجل رصد المنتجات داخل التطبيق التي يتم تلقّيها خارج اللعبة.
في
onResume()
رد الاتصالqueryPurchases()
الخاص بلعبتك، استدعِ الدالةqueryPurchases()
لاسترداد قائمة بالعناصر، حتى تتمكّن من تحديد العناصر التي لم يتم تأكيد استلامها.إذا كانت لعبتك تتضمّن خادمًا، ننصحك بشدة بالتحقّق من عملية الشراء من خادمك باستخدام واجهة برمجة التطبيقات الخاصة بالاشتراكات وعمليات الشراء داخل التطبيق.
إذا كانت هناك منتجات تم شراؤها ولكن لم يتم إقرارها، يجب إقرار عملية الشراء إما باستخدام
consumeAsync()
للمنتجات الاستهلاكية أو باستخدامacknowledgePurchase()
للمنتجات غير الاستهلاكية.منح إذن استخدام المنتج الذي تم شراؤه داخل اللعبة
رصد العناصر التي تم تلقّيها في وضع تقسيم الشاشة
إذا كانت لعبتك تتوافق مع وضع النوافذ المتعددة، يمكن للمستخدمين الاستفادة من نقاط Play Points والحصول على المنتج أثناء تشغيل تطبيق "متجر Play" ولعبتك في الوقت نفسه. تعرض لقطة الشاشة هذه مثالاً:
لإتاحة هذه الحالة باستخدام Google Play Billing Library، اتّبِع الخطوات التالية:
يستدعي Google Play الطريقة
onPurchasesUpdated()
لإعلام لعبتك بأنّ هناك عنصرًا جديدًا في انتظار المراجعة.إذا كانت لعبتك تتضمّن خادمًا، ننصحك بشدة بالتحقّق من عملية الشراء من خادمك باستخدام واجهة برمجة التطبيقات الخاصة بالاشتراكات وعمليات الشراء داخل التطبيق.
أقرّ بعملية الشراء باستخدام
consumeAsync()
للسلع الاستهلاكية أوacknowledgePurchase()
للسلع غير الاستهلاكية.منح إذن استخدام المنتج الذي تم شراؤه داخل اللعبة
عرض تأكيد التسليم
عندما يسترد المستخدمون نقاط Play Points ويتلقّون عنصرًا مقابلها، يتوقّعون أن تعرض اللعبة رسالة داخلها أو تستخدم نوعًا من الإشعارات لإعلامهم بأنّها تلقّت العنصر وعالجته بشكل صحيح. في ما يلي بعض خيارات تأكيد التسليم:
عرض نافذة منبثقة داخل اللعبة
إرسال الرسالة إلى مربّع الرسائل داخل اللعبة، وتوضيح أنّه تم تلقّي رسالة جديدة في مربّع الرسائل داخل اللعبة
استخدِم رسالة إشعار من نظام التشغيل.
من الممكن أن تكون اللعبة في أي حالة عند تلقّي المنتج الترويجي، بما في ذلك عدم تثبيتها على الجهاز. يجب رصد السلع الترويجية بغض النظر عن حالة اللعبة عند استلام السلعة. ومع ذلك، هناك بعض الاستثناءات التي قد يكون من المقبول فيها عدم إعلام المستخدم فورًا باستلام السلعة. مثلاً:
أثناء تنفيذ إجراء في اللعبة، حيث قد يؤدي عرض رسالة إلى تشتيت انتباه المستخدم. في هذه الحالة، عليك إرسال إشعار إلى المستخدم بعد انتهاء الإجراء.
أثناء المشاهد السينمائية التي قد يؤدي عرض رسالة فيها إلى تشتيت انتباه المستخدم في هذه الحالة، عليك إرسال إشعار إلى المستخدم بعد انتهاء المشهد السينمائي.
أثناء الأجزاء الأولية من البرنامج التعليمي وإعداد المستخدم في اللعبة ننصحك بإشعار المستخدمين الجدد بالمكافأة فور فتحهم اللعبة أو أثناء عملية إعداد المستخدمين الأوّلية. ومع ذلك، لا بأس من الانتظار إلى أن يتوفّر تسلسل اللعبة الرئيسي لإرسال إشعار إلى المستخدم.
إذا كان تطبيقك يتضمّن شخصيات أو حسابات متعدّدة يمكن تطبيق السلعة عليها، ننصحك بأن تطلب من المستخدم اختيار الحساب الذي سيتلقّى السلع الترويجية.
ضَع المستخدمين في الاعتبار عند تحديد وقت وكيفية إعلامهم بالعناصر الترويجية. في أي وقت لا يتلقّى فيه المستخدم إشعارًا على الفور، قد يشعر بالارتباك أو يتوقف عن لعب اللعبة أو يتواصل مع فريق دعم المستخدمين أو يشتكي من ذلك على وسائل التواصل الاجتماعي.
تحديثات لمحركات ألعاب معيّنة
في ما يلي بعض الاعتبارات التي يجب مراعاتها لمحركات ألعاب معيّنة:
إذا كانت لعبتك مصمَّمة باستخدام Unity، ننصحك بالتحقّق مما إذا كان تنفيذ عملية الشراء داخل التطبيق الذي تستخدمه يتيح عروض Play Points الترويجية.
إذا كانت لعبتك مبرمَجة باستخدام Cocos2d-x أو Unreal Engine (C/C++)، من المرجّح أنّك ستحتاج إلى كتابة رمز JNI الذي يستدعي واجهات برمجة تطبيقات Java من رمز C/C++.
أفضل الممارسات من جهة الخادم
يحتوي هذا القسم على أفضل الممارسات من جهة الخادم التي يجب اتّباعها في العروض الترويجية في Play Points:
إذا كنت تستخدم
Purchases.products: get
على خادمك، تحقَّق مما إذا كنت بحاجة إلى التعامل مع عناصر استبدال المكافآت في Play وغيرها من المنتجات داخل التطبيق بشكل منفصل استنادًا إلى قيمproductId
.إذا كنت تستخدم
Inappproducts: list
على خادمك، تحقَّق مما إذا كنت بحاجة إلى فصل عناصر استبدال مكافآت Play عن المنتجات الأخرى داخل التطبيق باستخدام قيمproductId
.راجِع أفضل الممارسات التالية للتحقّق مما إذا كنت بحاجة إلى إجراء تغييرات إضافية:
- المرجع:
- تنفيذ عملية التحقّق من التوقيع من جهة الخادم
- تأكَّد من أنّ قيمتَي
purchaseToken
وorderId
فريدتان ولم يتم استخدامهما من قبل.
تحديد المشاكل وحلّها
يحتوي هذا القسم على اقتراحات بشأن السيناريوهات التي يمكن أن تؤدي إلى استفسارات من العملاء.
حسابات مستخدمين متعددة
إذا كان لدى المستخدم حسابات متعدّدة على Google على جهازه واستردّ نقاط Play Points في الحساب الخاطئ، لا يمكن لشركة Google نقل العناصر إلى الحسابات الأخرى. وبالمثل، لا يمكن لتطبيقك نقل العنصر من خلال استدعاء الطريقة getPurchases()
. في هذه الحالة، ننصحك بتوفير السلع داخل التطبيق للمستخدم يدويًا باستخدام عمليات دعم العملاء.
السلع المتأخّرة أو غير المتوفّرة
إذا واجه اللاعبون تأخيرًا في استلام عناصر المكافآت أو لم يستلموها، يُرجى الاطّلاع على دليل تحديد المشاكل وحلّها في عمليات الشراء داخل التطبيق ضمن مستندات المساعدة في Google Play.