تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يوضّح هذا الدليل كيفية دمج المراجعات داخل التطبيق باستخدام Unreal
Engine. تتوفّر أدلة دمج منفصلة إذا كنت تستخدم Kotlin أو
Java أو الرمز الأصلي أو Unity.
نظرة عامة على حزمة تطوير البرامج (SDK) لمحرك Unreal
تشكّل واجهة برمجة التطبيقات Play In-App Reviews API جزءًا من مجموعة حِزم تطوير البرامج (SDK) Play Core. تقدّم واجهة برمجة التطبيقات لمحرك Unreal
فئة UInAppReviewsManager لطلب عملية البث وإطلاقها
باستخدام الطريقتَين RequestReviewFlow وLaunchReviewFlow. بعد إرسال طلب، يمكن لتطبيقك التحقّق من حالة الطلب باستخدام EInAppReviewErrorCode.
إصدارات Unreal Engine المتوافقة
يتوافق المكوّن الإضافي مع Unreal Engine 5.0 وجميع الإصدارات اللاحقة.
اتّبِع الإرشادات حول حالات طلب إجراء مراجعات داخل التطبيق لتحديد نقاط جيدة في مسار المستخدِم في تطبيقك لطلب إجراء مراجعة (على سبيل المثال،
بعد أن يغلِق المستخدِم شاشة الملخّص في نهاية مستوى في لعبة). عندما يقترب
تطبيقك من إحدى هذه النقاط، استخدِم UInAppReviewsManager create
عملية، كما هو موضّح في المثال التالي:
voidMyClass::RequestReviewFlow(){// Create a delegate to bind the callback function.FReviewOperationCompletedDelegateDelegate;// Bind the completion handler (OnReviewOperationCompleted) to the delegate.Delegate.BindDynamic(this,&MyClass::OnReviewOperationCompleted);// Initiate the review flow, passing the delegate to handle the result.GetGameInstance()->GetSubsystem<UInAppReviewsManager>()->RequestReviewFlow(Delegate);}
تنشئ الطريقة FRreviewOperationCompletedDelegate للتعامل مع
إكمال عملية المراجعة.
يكون المفوَّض مرتبطًا بطريقة OnReviewOperationCompleted التي سيتم
استدعاؤها بعد انتهاء العملية.
تضمن الدالة BindDynamic ربط المفوَّض بشكل صحيح بمحاولة callback.
تبدأ الطريقة RequestReviewFlow(Delegate) عملية المراجعة، مع تمرير
المفوّض للتعامل مع النتيجة.
يتم تنفيذ عملية المراجعة بشكل غير متزامن، ما يسمح بمواصلة المهام الأخرى في التطبيق
أثناء اكتمالها.
بعد انتهاء العملية، يعالج OnReviewOperationCompleted callback
النتيجة، بما في ذلك النجاح أو الفشل.
بدء عملية المراجعة داخل التطبيق
بعد اكتمال عملية RequestReviewFlow، يمكنك بدء عملية RequestReviewFlow المراجعة داخل التطبيق. ويتم ذلك من خلال ربط مفوَّض لمعالجة حدث الاكتمال،
ما يضمن استجابة التطبيق للنتيجة (نجاح أو فشل) لطلب المراجعة.
voidMyClass::LaunchReviewFlow(){// Create a delegate to bind the callback function.FReviewOperationCompletedDelegateDelegate;// Bind the completion handler (OnReviewOperationCompleted) to the delegate.Delegate.BindDynamic(this,&MyClass::OnReviewOperationCompleted);// Launch the review flow, passing the delegate to handle the result.GetGameInstance()->GetSubsystem<UInAppReviewsManager>()->LaunchReviewFlow(Delegate);}
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Integrate in-app reviews (Unreal Engine)\n\nThis guide describes how to integrate in-app reviews in your app using Unreal\nEngine. There are separate integration guides for if you are using [Kotlin or\nJava](/guide/playcore/in-app-review/kotlin-java), [native code](/guide/playcore/in-app-review/native) or [Unity](/guide/playcore/in-app-review/unity).\n\nUnreal Engine SDK overview\n--------------------------\n\nThe Play In-App Reviews API is part of Play Core SDK family. The API for Unreal\nEngine offers a `UInAppReviewsManager` class to request and launch the flow\nusing the `RequestReviewFlow` and `LaunchReviewFlow` methods. After a request is\nmade, your app can check the status of the request using\n`EInAppReviewErrorCode`.\n\nSupported Unreal Engine versions\n--------------------------------\n\nThe plugin supports **Unreal Engine 5.0** and all subsequent versions.\n\nSet up your development environment\n-----------------------------------\n\n| **Note:** If you have already used the In-app Reviews or In-app Updates plugins in Unreal Engine, you can skip to the final step.\n\n1. Download the [Play Unreal Engine Plugin](https://github.com/google/play-unreal-engine-plugin) from the GitHub\n repository.\n\n2. Copy the `GooglePlay` folder inside your `Plugins` folder in your Unreal\n Engine project.\n\n3. Open your Unreal Engine project and click **Edit → Plugins**.\n\n4. Search for **Google Play** and check the **Enabled** checkbox.\n\n5. Restart the game project and trigger a build.\n\n6. Open your project's `Build.cs` file and add the `PlayInAppReviews` module\n to `PublicDependencyModuleNames`:\n\n using UnrealBuildTool;\n\n public class MyGame : ModuleRules\n {\n public MyGame(ReadOnlyTargetRules Target) : base(Target)\n {\n // ...\n\n PublicDependencyModuleNames.Add(\"PlayInAppReviews\");\n\n // ...\n }\n }\n\nRequest the in-app review flow\n------------------------------\n\nFollow the guidance about [when to request in-app reviews](/guide/playcore/in-app-review#when-to-request) to determine good\npoints in your app's user flow to prompt the user for a review (for example,\nafter a user dismisses the summary screen at the end of a level in a game). When\nyour app gets close one of these points, use the `UInAppReviewsManager` create\nan operation, as shown in the following example:\n\nMyClass.h \n\n void MyClass::OnReviewOperationCompleted(EInAppReviewErrorCode ErrorCode)\n {\n // ...\n }\n\nMyClass.cpp \n\n void MyClass::RequestReviewFlow()\n {\n // Create a delegate to bind the callback function.\n FReviewOperationCompletedDelegate Delegate;\n\n // Bind the completion handler (OnReviewOperationCompleted) to the delegate.\n Delegate.BindDynamic(this, &MyClass::OnReviewOperationCompleted);\n\n // Initiate the review flow, passing the delegate to handle the result.\n GetGameInstance()\n -\u003eGetSubsystem\u003cUInAppReviewsManager\u003e()\n -\u003eRequestReviewFlow(Delegate);\n }\n\n1. The method creates a `FRreviewOperationCompletedDelegate` to handle the\n completion of the review operation.\n\n2. The delegate is bound to the `OnReviewOperationCompleted` method, which will\n be called once the operation finishes.\n\n3. The `BindDynamic` function ensures that the delegate is properly linked to\n the callback.\n\n4. The `RequestReviewFlow(Delegate)` method starts the review process, passing\n the delegate to handle the result.\n\n5. The review operation runs asynchronously, allowing other tasks in the app to\n continue while it completes.\n\n6. Once the operation finishes, the `OnReviewOperationCompleted` callback\n processes the result, including success or failure.\n\nLaunch the in-app review flow\n-----------------------------\n\nOnce the `RequestReviewFlow` operation is complete, you can launch the in-app\nreview flow. This is done by binding a delegate to handle the completion event,\nensuring the app reacts to the outcome (success or failure) of the review\nrequest.\n\nMyClass.h \n\n void MyClass::OnReviewOperationCompleted(EInAppReviewErrorCode ErrorCode)\n {\n // ...\n }\n\nMyClass.cpp \n\n void MyClass::LaunchReviewFlow()\n {\n // Create a delegate to bind the callback function.\n FReviewOperationCompletedDelegate Delegate;\n\n // Bind the completion handler (OnReviewOperationCompleted) to the delegate.\n Delegate.BindDynamic(this, &MyClass::OnReviewOperationCompleted);\n\n // Launch the review flow, passing the delegate to handle the result.\n GetGameInstance()\n -\u003eGetSubsystem\u003cUInAppReviewsManager\u003e()\n -\u003eLaunchReviewFlow(Delegate);\n }\n\nNext steps\n----------\n\n[Test your app's in-app review flow](/guide/playcore/in-app-review/test) to verify that your integration is\nworking correctly."]]