أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.
إشعارات اللعبة تتيح لك مخاطبة لاعبيك: الإعلان عن فعالية، أو الاحتفاء بإنجاز، أو استعادة
مجموعة انقطعت عن اللعب. تكتب الرسالة مرة واحدة على هيئة قالب، وترسلها عبر حملة،
فيستلمها اللاعبون على القنوات التي اخترتها — صندوق الوارد داخل اللعبة، أو البريد
الإلكتروني، أو الإشعارات الفورية.
النطاق: تُحدَّد القوالب والحملات لكل لعبة، أما صندوق الوارد فلكل لاعب.
لوحة التحكم
Unity
Unreal
تجد الإشعارات ضمن التسويق:
القوالب — الرسالة القابلة لإعادة الاستخدام: عنوان ونص (بلغة محدّدة)، والقنوات التي
يمكن إرسالها عبرها، ومتغيّرات تملؤها عند الإرسال — اكتب إعلان بداية الموسم مرة واحدة
واجعل اسم الموسم متغيّرًا، ثم أعد استخدامه كل موسم.
الحملات — عملية الإرسال الفعلية: اختر قالبًا، واملأ متغيّراته، وحدّد الجمهور —
كل اللاعبين أو شريحة — ثم أرسل الآن، أو في وقت مجدول، أو
على وتيرة متكرّرة. ويمكن إلغاء الحملة المجدولة في أي وقت قبل انطلاقها.
حالة التسليم — كيف جرى الإرسال: دورة حياته من مُجدولة إلى قيد الإرسال إلى مُرسَلة،
مع أعداد التسليم لكل قناة وأي إخفاقات.
بيانات اعتماد الإشعارات الفورية. الإشعارات الفورية هي القناة الوحيدة التي تحتاج إعدادًا
قبل أن يُسلَّم أي شيء. من الإعدادات ← الإشعارات الفورية، اضبط المزوّدين اللذين تشحن
عليهما — وبيانات الاعتماد لكل لعبة على حدة، تُخزَّن مشفَّرة، وللكتابة فقط: يمكن استبدالها
ولا يمكن الاطّلاع عليها مرة أخرى.
Firebase Cloud Messaging (FCM) — تُسلِّم إلى Android والويب. الصق كامل محتوى ملف
حساب الخدمة (service-account JSON) من Firebase.
Apple Push Notification service (APNs) — تُسلِّم إلى iOS. زوّدها بمفتاح التوقيع
.p8، وKey ID الخاص به، وTeam ID لفريقك، وBundle ID للتطبيق. وفعّل
Use APNs sandbox لإصدارات التطوير؛ إذ لا يقبل رمز البيئة التجريبية بيانات اعتماد
الإنتاج، ولا العكس.
وما لم يظهر المزوّد بحالة Configured، فإن رموز الأجهزة تُسجَّل بنجاح ولا يُسلَّم شيء
البتة على تلك المنصّة. وهذا هو السبب الأشيع وراء «الإشعارات الفورية لا تعمل» — فجانب العميل
يبلّغ بالنجاح لأن التسجيل نجح فعلًا.
صندوق الوارد. اجلب إشعارات اللاعب المسجَّل دخوله، واعرض شارة غير المقروء، وضع العناصر
كمقروءة واحدًا تلو الآخر أو دفعة واحدة.
using Flock;using Flock.Models;using UnityEngine;PaginatedResponse<Notification> inbox = await FlockClient.Instance.Notification.GetInboxAsync();NotificationSummary summary = await FlockClient.Instance.Notification.GetSummaryAsync();Debug.Log($"{summary.UnreadCount} unread");// علّم أحدث إشعار مقروءًا، ثم كل الإشعارات.if (inbox.Items.Length > 0) await FlockClient.Instance.Notification.MarkReadAsync(inbox.Items[0]);await FlockClient.Instance.Notification.MarkAllReadAsync();
وتُعيد GetSummaryAsync عدد غير المقروء مع أحدث بضعة عناصر، فتحصل على الشارة والمعاينة
باستدعاء واحد. وفضّلها على إعادة جلب صندوق الوارد كاملًا على فترات — فقراءات صندوق الوارد
تُحتسب ضمن استخدام خطتك للواجهة البرمجية شأنها شأن أي استدعاء آخر.الإشعارات الفورية. تختلف طريقة الحصول على رمز الجهاز باختلاف المنصّة، وحزمة التطوير
صريحة بشأن ما تستطيع أن تتولّاه عنك:
iOS — تطلب RegisterThisDeviceAsync() إذن الإشعارات من النظام وتسجّل رمز APNs الناتج
في استدعاء واحد. وتتطلّب وجود com.unity.mobile.notifications في المشروع.
Android — احصل على رمز FCM من Firebase بنفسك، ثم مرّره إلى
RegisterDeviceTokenAsync(token). فعميل Firebase للمراسلة غير قابل للتثبيت عبر UPM، ومن ثمّ
لا تستطيع حزمة التطوير شحنه كاعتمادية ولا تحاول ذلك عمدًا.
ما عدا ذلك (الحاسب المكتبي وأجهزة الكونسول والمحرّر) — يرمي الاستدعاءان استثناءً، لأن
خادم الإشعارات الفورية لا قيمة لديه لتلك المنصّات.
using Flock;using UnityEngine;// iOS: تطلب الإذن وتسجّل رمز APNs في استدعاء واحد.if (Application.platform == RuntimePlatform.IPhonePlayer) await FlockClient.Instance.Notification.RegisterThisDeviceAsync();// Android: رمز FCM الذي تلقّته شيفرة Firebase للمراسلة لديك.if (Application.platform == RuntimePlatform.Android) await FlockClient.Instance.Notification.RegisterDeviceTokenAsync(fcmToken);
وfcmToken نصّ الرمز الوارد من Firebase. وأعد التسجيل كلما أصدر النظام رمزًا جديدًا. وتزيل
UnregisterDeviceTokenAsync رمزًا مسجَّلًا.تذكيرات تجدولها اللعبة بنفسها. جدوِل قالبًا ليصل لاحقًا — «امتلأت الطاقة بعد ٤ ساعات» —
وألغِه إن عاد اللاعب قبل ذلك.
والوسيط الأول هو اسم القالب لا معرّفه. مرّر variables لملء عناصر القالب النائبة،
وchannels لحصر قنوات التسليم، وlocale لاختيار لغة بعينها. أما الاسم غير المعروف فيرمي
FlockErrorCode.NotificationTemplateNotFound قبل أن يُجدول أي شيء.ما لدى اللاعب من تذكيرات معلّقة. تسأل GetScheduledAsync() الخادمَ، فترى بذلك التذكيرات
التي ضُبطت قبل إعادة التثبيت أو على جهاز اللاعب الآخر — لا ما أنشأته هذه النسخة وحدها.
using Flock;using Flock.Models;using UnityEngine;PaginatedResponse<ScheduledNotification> pending = await FlockClient.Instance.Notification.GetScheduledAsync();foreach (ScheduledNotification s in pending.Items) Debug.Log($"{s.Id} delivers at {s.DeliverAt}");// تلغي كل تذكير معلّق لدى اللاعب، أيًّا كان مكان ضبطه.int cancelled = await FlockClient.Instance.Notification.CancelAllScheduledAsync();
والحالة الافتراضية هي المعلّقة؛ مرّر ScheduledNotificationStatuses.Delivered أو .Canceled
لعرض غيرها. وتبقى GetPendingSchedules() بديلًا متزامنًا لا يحتاج شبكة، يغطّي ما جدولته هذه
النسخة — مفيد دون اتصال، لكن فضّل GetScheduledAsync متى أمكن الوصول إلى الخادم.قراءة الكتالوج. تسرد GetTemplatesAsync() القوالب التي يمكن للعبتك جدولتها، وتجلب
GetTemplateByNameAsync(name, locale) قالبًا واحدًا. وكلتاهما على نطاق اللعبة لا اللاعب،
ولذلك تعملان دون تسجيل دخول بخلاف بقية هذا المزوّد.التفاعل مع الوصول. يُطلَق FlockEvents.OnNotificationReceived مرة واحدة لكل إشعار لم
تعرضه حزمة التطوير من قبل، من الأقدم إلى الأحدث. وهو يعتمد على عمليات الجلب التي تجريها
لعبتك أصلًا ولا يضيف أي حركة شبكية — إذ لا توجد قناة لحظية، وحزمة التطوير لا تستقصي عمدًا.
صندوق الوارد. اجلب إشعارات اللاعب المسجَّل دخوله، واعرض شارة غير المقروء، وضع العناصر
كمقروءة واحدًا تلو الآخر أو دفعة واحدة.
#include "FlockSubsystem.h"FFlockNotificationProvider* Notifications = UFlockSubsystem::Get(this)->GetNotificationProvider();Notifications->GetNotifications([](TFlockResult<FFlockNotificationPage> Page){ // Page.Value.Total is the whole inbox; Page.Value.Items is this page.});Notifications->GetSummary([](TFlockResult<FFlockNotificationSummary> Summary){ // Summary.Value.UnreadCount, plus the newest few in Summary.Value.Items.});// NotificationId: an item's Id from the page.Notifications->MarkRead(NotificationId, nullptr);Notifications->MarkAllRead(nullptr);
وتُعيد GetSummary عدد غير المقروء مع أحدث بضعة عناصر، فتحصل على الشارة والمعاينة باستدعاء
واحد. وفضّلها على إعادة جلب صندوق الوارد كاملًا على فترات — فقراءات صندوق الوارد تُحتسب ضمن
استخدام خطتك للواجهة البرمجية شأنها شأن أي استدعاء آخر.وقراءات صندوق الوارد مدعومة بالتخزين المؤقت دون اتصال، فتعرض شاشة الإشعارات آخر الرسائل
المعروفة عند انقطاع الشبكة بدل رسالة خطأ. أما استدعاءات وضع العلامة كمقروء فلا تُصفّ أبدًا
للإرسال لاحقًا: فإيصال قراءة يُعاد إرساله بعد ساعة سيضع علامة مقروء على رسائل لم يرها اللاعب.الإشعارات الفورية. تسجّل حزمة التطوير رمز الجهاز ولا تجلبه. احصل على الرمز من إضافة
الإشعارات لديك — On Token Received في Firebase Cloud Messaging، أو OneSignal — ومرّر النص:
// Token: the string your push plugin hands you.Notifications->RegisterDeviceToken(Token, [](TFlockResult<FFlockDeviceToken> Result) {});
وتُؤخذ المنصّة من الإصدار قيد التشغيل. أما على الحاسب المكتبي وأجهزة الكونسول وداخل المحرّر
فيفشل الاستدعاء بخطأ تحقّق بدل تخمين منصّة — إذ إن الرمز المسجَّل تحت منصّة خاطئة يُقبل ثم لا
يُسلَّم أبدًا. استدعِ Flock Get Current Device Platform أولًا لإخفاء خيار «تفعيل الإشعارات»
حيث لا تعمل الإشعارات الفورية. وتزيل UnregisterDeviceToken رمزًا مسجَّلًا؛ وأعد التسجيل كلما
أصدر النظام رمزًا جديدًا.ويختلف مصدر الرمز باختلاف المنصّة:
iOS — لا تحتاج شيئًا إضافيًا. إذ يوفّر Unreal رمز APNs بنفسه، ويتخاطب Flock مع APNs
مباشرةً، فلا وجود لـ Firebase في هذا المسار. اربط
FCoreDelegates::ApplicationRegisteredForRemoteNotificationsDelegate، وحوّل البايتات إلى
صيغة ست عشرية، ثم مرّر النص.
Android — إضافة قائمة على Firebase، في الوقت الحالي. فإضافة Unreal الخاصة بالإشعارات على
Android مبنية على Google Cloud Messaging التي أوقفتها Google عام 2019.
الحصول المدمج على الرمز قيد التطوير — غلاف باستدعاء واحد على iOS وربط أصلي على Android —
بحيث لا تحتاج الإشعارات الفورية إلى إضافة خارجية. ولن يتغيّر RegisterDeviceToken عند وصولهما،
وإنما مصدر النص فقط.
تذكيرات تجدولها اللعبة بنفسها. جدوِل قالبًا ليصل لاحقًا — «امتلأت الطاقة بعد ٤ ساعات» —
وألغِه إن عاد اللاعب قبل ذلك.
const TWeakObjectPtr<UFlockSubsystem> Flock = UFlockSubsystem::Get(this);Flock->GetNotificationProvider()->ScheduleByTemplateName(TEXT("energy_refilled"), FDateTime::UtcNow() + FTimespan::FromHours(4), [Flock](TFlockResult<FFlockScheduledNotification> Pending) { // The player came back first: cancel it with the id the schedule returned. if (Pending.bSuccess && Flock.IsValid()) { Flock->GetNotificationProvider()->CancelScheduled(Pending.Value.Id, nullptr); } });
والوسيط الأول هو اسم القالب لا معرّفه — إذ يُستخرج المعرّف داخليًا ويُحفظ في الذاكرة.
مرّر Variables لملء عناصر القالب النائبة، وChannels لحصر قنوات التسليم؛ واترك أيًّا منهما
فارغًا فتُطبَّق إعدادات القالب الافتراضية. أما الاسم غير المعروف فيفشل بخطأ تحقّق قبل أن
يُجدول أي شيء.ولا يُعاد إرسال الجدولة بعد إخفاق غامض، حتى لا يترك انقطاع شبكي عابر لدى اللاعب تذكيرين
متطابقين. أما الإلغاء فعمليته آمنة التكرار.قراءة الكتالوج. تسرد GetTemplates() القوالب التي يمكن للعبتك جدولتها، وتجلب
GetTemplateByName(Name, Locale) قالبًا واحدًا. وكلتاهما على نطاق اللعبة لا اللاعب، ولذلك
تعملان دون تسجيل دخول بخلاف بقية هذا المزوّد.ما لدى اللاعب من تذكيرات معلّقة. تسأل GetScheduled() الخادمَ، فترى بذلك التذكيرات التي ضُبطت
قبل إعادة التثبيت أو على جهاز اللاعب الآخر — لا ما أنشأته هذه النسخة وحدها.
Notifications->GetScheduled([](TFlockResult<FFlockScheduledNotificationPage> Pending){ for (const FFlockScheduledNotification& Entry : Pending.Value.Items) { // Entry.Id is what Cancel Scheduled Notification takes. }});// Cancels every pending reminder the player has, wherever it was set.Notifications->CancelAllScheduled([](TFlockResult<int32> Result) { /* Result.Value cancelled */ });
والحالة الافتراضية هي «معلّق»؛ ومرّر FlockScheduledNotificationStatuses::Delivered أو
::Canceled لعرض غيرها. وفي Blueprint هذه هي عقدة Flock Get Scheduled Notifications، ويأخذ
طرفها Status قيمة «معلّق» افتراضيًا — غذِّه من عقد Flock Schedule Status بدل كتابة القيمة،
فالتهجئة على السلك هي canceled بلام واحدة.ولا تُخزَّن القائمة مؤقتًا أبدًا: إذ يُسلَّم التذكير من جهة الخادم دون ما يُعلم العميل، فالصفحة
المخزَّنة ستعرض تذكيرًا انطلق فعلًا على أنه ما يزال معلّقًا. وهي تحتاج إلى شبكة وإلى لاعب مسجَّل
الدخول.وتبقى GetPendingSchedules() بديلًا متزامنًا لا يحتاج شبكة، يغطّي ما جدولته هذه النسخة —
مفيد دون اتصال، لكن فضّل GetScheduled متى أمكن الوصول إلى الخادم. ولا تلجأ
CancelAllScheduled إليه إلا عند فشل القراءة من الخادم؛ ولا تُدمج القائمتان أبدًا.وفي Blueprint هذه العقد هي Flock Get Scheduled Notifications وFlock Cancel All Scheduled
Notifications وFlock Get Pending Schedules. ويأخذ الطرف Status قيمة «معلّق» افتراضيًا —
غذِّه من عقد Flock Schedule Status بدل كتابة القيمة، فالتهجئة على السلك هي canceled بلام واحدة.
وعقدة Get Pending Schedules عقدة استدعاء عادية لا غير متزامنة: فهي لا تُجري أي اتصال بالشبكة.
استخدم Flock Cancel All Scheduled Notifications بدل تكرار Flock Cancel Scheduled
Notification على قائمة. إذ تُطلق حلقة ForEach في Blueprint كل تكرار في الإطار نفسه، ويعيد كل
إلغاء كتابة قائمة الانتظار المخزَّنة عند اكتماله — فتتسابق عمليات الإلغاء، ويعيد آخرها انتهاءً
إدخالاتٍ سبق أن أزالها غيره. أما العقدة المخصّصة فتمشي عليها بالتتابع لهذا السبب بالذات.
التفاعل مع الوصول. يوفّر مركز الأحداث حدثين يغنيانك عن مقارنة الصفحات بنفسك:
// In AMyActor's class, each handler is a UFUNCTION():// void HandleNotification(const FFlockNotification& Notification);// void HandleUnreadCount(int32 UnreadCount);UFlockEvents* Events = UFlockSubsystem::Get(this)->GetEvents();Events->OnNotificationReceived.AddDynamic(this, &AMyActor::HandleNotification);Events->OnUnreadCountChanged.AddDynamic(this, &AMyActor::HandleUnreadCount);
يُطلق OnNotificationReceived مرة واحدة لكل إشعار لم تعرضه الحزمة من قبل، من الأقدم إلى
الأحدث. ويُطلق OnUnreadCountChanged كلما أبلغ الخادم بعدد — عند جلب عدد غير المقروء أو
الملخّص، أو عند تعليم الكل كمقروء. وكلاهما يعتمد على عمليات الجلب التي تجريها لعبتك أصلًا ولا
يضيف أي حركة شبكية: فلا توجد قناة لحظية، والحزمة لا تستطلع الخادم عمدًا، ولذلك يعني «الوصول»
أول ظهور في عملية قراءة. وأول عملية جلب بعد تثبيت جديد صامتة، حتى لا يصل صندوق وارد قائم
دفعةً واحدة من الأحداث عند الإقلاع.
أبقِ شارة غير المقروء محدَّثة: اربط On Unread Count Changed مرة واحدة، عند Begin Play.
Blueprint. لكل استدعاء أعلاه عقدة — Flock Get Notifications وFlock Get Notification Summary وFlock Mark Notification Read وFlock Schedule Notification وFlock Register Device Token وغيرها — إضافة إلى العقد المساعدة Is Read وIs Pending وIs Delivered وIs Canceled، التي لا منافذ تنفيذ لها.
ويمكن ربط الحدثين مباشرة من Flock Get Events.
هذه الصفحة عن الرسائل الموجَّهة إلى اللاعبين. أما التنبيهات الموجَّهة إلى فريقك أنت —
ارتفاع الأخطاء، ونتائج الإصدارات — فهي تنبيهات المطوّرين.
هل كانت هذه الصفحة مفيدة؟
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Qwacks","description":"Developer documentation for the Qwacks platform — Flock, Protokite, and Data Duck.","colors":{"primary":"#0099FF","light":"#33ADFF","dark":"#0077CC"},"logo":{"light":"https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/icons/qwacks.svg?fit=max\u0026auto=format\u0026n=TGGmq_oWzDacAqHl\u0026q=85\u0026s=2023abb340d6ec576975601525ab2ce9","dark":"https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/icons/qwacks.svg?fit=max\u0026auto=format\u0026n=TGGmq_oWzDacAqHl\u0026q=85\u0026s=2023abb340d6ec576975601525ab2ce9"},"favicon":"https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/icons/qwacks.svg?fit=max\u0026auto=format\u0026n=TGGmq_oWzDacAqHl\u0026q=85\u0026s=2023abb340d6ec576975601525ab2ce9","appearance":{"default":"dark","strict":true},"background":{"image":{"light":"https://mintcdn.com/qwacks/YCE61raZ52-QoE_F/officalbg.jpg?fit=max\u0026auto=format\u0026n=YCE61raZ52-QoE_F\u0026q=85\u0026s=5be5500ff5788565cf90d6a3e2111d47","dark":"https://mintcdn.com/qwacks/YCE61raZ52-QoE_F/officalbg.jpg?fit=max\u0026auto=format\u0026n=YCE61raZ52-QoE_F\u0026q=85\u0026s=5be5500ff5788565cf90d6a3e2111d47"},"color":{"light":"#FFFFFF","dark":"#181E2E"}},"navbar":{"links":[{"href":"https://www.qwacks.com/pricing","label":"Pricing"},{"href":"https://github.com/QwackStack/FlockUnitySdk/releases","label":"Unity SDK"},{"href":"https://github.com/QwackStack/FlockUnrealSdk/releases","label":"Unreal SDK"}],"primary":{"type":"button","label":"Dashboard","href":"https://flock-saas.qwacks.com"}},"fonts":{"heading":{"family":"Readex Pro"},"body":{"family":"Inter"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":"welcome"},{"language":"ar","navbar":{"links":[{"href":"https://www.qwacks.com/pricing","label":"الأسعار"},{"href":"https://github.com/QwackStack/FlockUnitySdk/releases","label":"حزمة Unity"},{"href":"https://github.com/QwackStack/FlockUnrealSdk/releases","label":"حزمة Unreal"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://flock-saas.qwacks.com"}},"href":"ar/welcome"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qwacks","hasAudioNarration":false,"actualSubdomain":"qwacks","customDomains":["docs.qwacks.com"],"gitSource":{"type":"github","owner":"qwackstack","repo":"qwacksdocs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6af5a22514affe1bdef08994","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"ar","tag":"Flock","count":32},{"language":"en","tag":"Flock","count":32},{"language":"ar","tag":"الميزات","count":23},{"language":"en","tag":"Features","count":23},{"language":"ar","tag":"Qwacks","count":12},{"language":"en","tag":"Qwacks","count":12},{"language":"ar","tag":"بدء الاستخدام","count":11},{"language":"en","tag":"Getting Started","count":11},{"language":"ar","tag":"اللعب الجماعي","count":5},{"language":"ar","tag":"Protokite","count":5},{"language":"ar","tag":"المدفوعات والفوترة","count":5},{"language":"en","tag":"Multiplayer","count":5},{"language":"en","tag":"Protokite","count":5},{"language":"en","tag":"Payments \u0026 Billing","count":5},{"language":"ar","tag":"اللاعبون","count":4},{"language":"ar","tag":"الاقتصاد والمدفوعات","count":4},{"language":"en","tag":"Players","count":4},{"language":"en","tag":"Economy and Payments","count":4},{"language":"ar","tag":"المفاهيم","count":3},{"language":"en","tag":"Concepts","count":3}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".nav-logo{height:2.5rem!important;max-width:none!important}#topbar-cta-button .bg-primary-dark{background-color:#feca13!important}#topbar-cta-button:hover .bg-primary-dark{background-color:#f89c1c!important}#topbar-cta-button a,#topbar-cta-button a *{color:#1a1206!important}.qwacks-lang-toggle{display:inline-flex;align-items:center;align-self:center;gap:0.5rem;padding:0.25rem 1rem;border:1px solid rgba(255, 255, 255, 0.1);border-radius:56px;background:transparent;color:#fafafa;font-family:\"Readex Pro\", sans-serif;font-size:0.875rem;line-height:1.25rem;white-space:nowrap;margin-inline-start:auto;margin-inline-end:1rem}.qwacks-lang-toggle__option{color:inherit;text-decoration:none;font-weight:400;opacity:0.3}.qwacks-lang-toggle__option:hover{opacity:0.7}.qwacks-lang-toggle__option.is-active{font-weight:700;opacity:1}@media (min-width: 1024px){#localization-select-trigger{display:none!important}}:is(h1,h2,h3,h4){position:relative}:is(h1,h2,h3,h4)>div.absolute{left:auto;right:auto;inset-inline-end:0}:is(h1,h2,h3,h4)>div.absolute>a{margin-inline:0!important}"},{"filePath":"rtl.css","content":"html[data-current-path^=\"/ar\"]{direction:rtl}[dir=\"rtl\"]{direction:rtl}html[lang=\"ar\"]{direction:rtl}@media (min-width: 1024px){html[lang=\"ar\"] .lg\\:-ml-12{margin-left:0;margin-right:-3rem}html[lang=\"ar\"] .lg\\:pl-\\[5\\.7rem\\]{padding-left:0.25rem;padding-right:5.7rem}html[lang=\"ar\"] .lg\\:pl-\\[23\\.7rem\\]{padding-left:0.25rem;padding-right:23.7rem}}[dir=\"rtl\"] :is(pre,code,kbd,samp){direction:ltr;text-align:left}[dir=\"rtl\"] :not(pre)>code{unicode-bidi:isolate}[dir=\"rtl\"] pre>*{direction:ltr}[dir=\"rtl\"] .pl-3\\.5{padding-left:0;padding-right:0.875rem}[dir=\"rtl\"] .pl-3{padding-left:0;padding-right:0.75rem}[dir=\"rtl\"] .pl-4{padding-left:0;padding-right:1rem}[dir=\"rtl\"] .pr-3{padding-right:0;padding-left:0.75rem}[dir=\"rtl\"] .pr-4{padding-right:0;padding-left:1rem}[dir=\"rtl\"] .pr-8{padding-right:0;padding-left:2rem}[dir=\"rtl\"] .ml-2{margin-left:0;margin-right:0.5rem}[dir=\"rtl\"] .ml-4{margin-left:0;margin-right:1rem}[dir=\"rtl\"] .-ml-4{margin-left:0;margin-right:-1rem}[dir=\"rtl\"] .-ml-10{margin-left:0;margin-right:-2.5rem}[dir=\"rtl\"] .mr-2{margin-right:0;margin-left:0.5rem}[dir=\"rtl\"] .mr-4{margin-right:0;margin-left:1rem}[dir=\"rtl\"] .text-left{text-align:right}[dir=\"rtl\"] .text-right{text-align:left}[dir=\"rtl\"] .left-0{left:auto;right:0}[dir=\"rtl\"] .right-0{right:auto;left:0}[dir=\"rtl\"] .space-x-2>:not([hidden])~:not([hidden]),[dir=\"rtl\"] .space-x-3>:not([hidden])~:not([hidden]),[dir=\"rtl\"] .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 1}[dir=\"rtl\"] .border-l{border-left-width:0;border-right-width:1px}[dir=\"rtl\"] .border-r{border-right-width:0;border-left-width:1px}@media (min-width: 1024px){[dir=\"rtl\"] .lg\\:-ml-12{margin-left:0;margin-right:-3rem}}[dir=\"rtl\"] :is(ul,ol){padding-left:0;padding-right:1.5rem}[dir=\"rtl\"] blockquote{border-left:0;border-right:4px solid currentColor;padding-left:0;padding-right:1rem}[dir=\"rtl\"] :is(th,td){text-align:right}[dir=\"rtl\"] .steps{margin-left:0;margin-right:0.875rem}[dir=\"rtl\"] .step>.absolute:not(.w-px){margin-left:0;margin-right:-13px}[dir=\"rtl\"] .step>:not(.absolute){padding-left:1px;padding-right:2rem}[dir=\"rtl\"] #table-of-contents{padding-inline-start:0.75rem;scrollbar-gutter:stable}[dir=\"rtl\"] #sidebar-content a[style*=\"padding-left\"]{padding-left:0!important;padding-right:1rem!important}[dir=\"rtl\"] .card .absolute{right:auto;left:1.25rem}[dir=\"rtl\"] .card .absolute svg{transform:scaleX(-1)}[dir=\"rtl\"] :is(.qwacks-flip-icon,[data-flip-rtl]) svg{transform:scaleX(-1)}[dir=\"rtl\"] #topbar-cta-button svg{transform:scaleX(-1)}[dir=\"rtl\"] .qwacks-lang-toggle svg{transform:none}[dir=\"rtl\"],[dir=\"rtl\"] body{font-family:\"Readex Pro\", system-ui, sans-serif;letter-spacing:normal;line-height:1.85}[dir=\"rtl\"] :is(h1,h2,h3,h4,h5,h6){font-family:\"Readex Pro\", system-ui, sans-serif;letter-spacing:normal;line-height:1.5}[dir=\"rtl\"] :is(pre,code,kbd,samp){font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;line-height:1.6}[dir=\"rtl\"]{font-variant-numeric:lining-nums}"}],"page":{"pagePath":"ar/guides/notifications","slug":"/ar/guides/notifications","pageMetadata":{"title":"الإشعارات","description":"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.","href":"/ar/guides/notifications"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const Scope=({children})=>{const{Info}=_provideComponents()||{};if(!Info)_missingMdxReference(`Info`,true);return _jsxs(Info,{children:[_jsx(`b`,{children:`النطاق:`}),` `,children]})};function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Frame,Note,OptimizedImage,Tab,Tabs,Warning,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`إشعارات اللعبة`}),` تتيح لك مخاطبة لاعبيك: الإعلان عن فعالية، أو الاحتفاء بإنجاز، أو استعادة\nمجموعة انقطعت عن اللعب. تكتب الرسالة مرة واحدة على هيئة `,_jsx(_components.strong,{children:`قالب`}),`، وترسلها عبر `,_jsx(_components.strong,{children:`حملة`}),`،\nفيستلمها اللاعبون على `,_jsx(_components.strong,{children:`القنوات`}),` التي اخترتها — صندوق الوارد داخل اللعبة، أو البريد\nالإلكتروني، أو الإشعارات الفورية.`]}),`\n`,_jsx(_MdxComponentBoundary,{name:`Scope`,children:_jsxs(Scope,{children:[`تُحدَّد القوالب والحملات لكل `,_jsx(_components.strong,{children:`لعبة`}),`، أما صندوق الوارد فلكل `,_jsx(_components.strong,{children:`لاعب`}),`.`]})}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`لوحة التحكم`,id:`%D9%84%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85`,children:[_jsxs(_components.p,{children:[`تجد الإشعارات ضمن `,_jsx(_components.strong,{children:`التسويق`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`القوالب`}),` — الرسالة القابلة لإعادة الاستخدام: عنوان ونص (بلغة محدّدة)، والقنوات التي\nيمكن إرسالها عبرها، و`,_jsx(_components.strong,{children:`متغيّرات`}),` تملؤها عند الإرسال — اكتب إعلان بداية الموسم مرة واحدة\nواجعل اسم الموسم متغيّرًا، ثم أعد استخدامه كل موسم.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`الحملات`}),` — عملية الإرسال الفعلية: اختر قالبًا، واملأ متغيّراته، وحدّد `,_jsx(_components.strong,{children:`الجمهور`}),` —\nكل اللاعبين أو `,_jsx(_components.a,{href:`/ar/guides/segments`,children:`شريحة`}),` — ثم أرسل `,_jsx(_components.strong,{children:`الآن`}),`، أو في وقت `,_jsx(_components.strong,{children:`مجدول`}),`، أو\nعلى وتيرة `,_jsx(_components.strong,{children:`متكرّرة`}),`. ويمكن إلغاء الحملة المجدولة في أي وقت قبل انطلاقها.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`حالة التسليم`}),` — كيف جرى الإرسال: دورة حياته من مُجدولة إلى قيد الإرسال إلى مُرسَلة،\nمع أعداد التسليم لكل قناة وأي إخفاقات.`]}),`\n`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`بيانات اعتماد الإشعارات الفورية.`}),` الإشعارات الفورية هي القناة الوحيدة التي تحتاج إعدادًا\nقبل أن يُسلَّم أي شيء. من `,_jsx(_components.strong,{children:`الإعدادات ← الإشعارات الفورية`}),`، اضبط المزوّدين اللذين تشحن\nعليهما — وبيانات الاعتماد لكل لعبة على حدة، تُخزَّن مشفَّرة، و`,_jsx(_components.strong,{children:`للكتابة فقط`}),`: يمكن استبدالها\nولا يمكن الاطّلاع عليها مرة أخرى.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Firebase Cloud Messaging (FCM)`}),` — تُسلِّم إلى `,_jsx(_components.strong,{children:`Android والويب`}),`. الصق كامل محتوى ملف\nحساب الخدمة (service-account JSON) من Firebase.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apple Push Notification service (APNs)`}),` — تُسلِّم إلى `,_jsx(_components.strong,{children:`iOS`}),`. زوّدها بمفتاح التوقيع\n`,_jsx(_components.code,{children:`.p8`}),`، و`,_jsx(_components.strong,{children:`Key ID`}),` الخاص به، و`,_jsx(_components.strong,{children:`Team ID`}),` لفريقك، و`,_jsx(_components.strong,{children:`Bundle ID`}),` للتطبيق. وفعّل\n`,_jsx(_components.strong,{children:`Use APNs sandbox`}),` لإصدارات التطوير؛ إذ لا يقبل رمز البيئة التجريبية بيانات اعتماد\nالإنتاج، ولا العكس.`]}),`\n`]}),_jsxs(_components.p,{children:[`وما لم يظهر المزوّد بحالة `,_jsx(_components.strong,{children:`Configured`}),`، فإن رموز الأجهزة تُسجَّل بنجاح ولا يُسلَّم شيء\nالبتة على تلك المنصّة. وهذا هو السبب الأشيع وراء «الإشعارات الفورية لا تعمل» — فجانب العميل\nيبلّغ بالنجاح لأن التسجيل نجح فعلًا.`]})]}),_jsxs(Tab,{title:`Unity`,id:`unity`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`صندوق الوارد.`}),` اجلب إشعارات اللاعب المسجَّل دخوله، واعرض شارة غير المقروء، وضع العناصر\nكمقروءة واحدًا تلو الآخر أو دفعة واحدة.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Models`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UnityEngine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`PaginatedResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`inbox`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetInboxAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`NotificationSummary`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` summary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetSummaryAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Debug`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`$\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`summary`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`UnreadCount`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` unread\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// علّم أحدث إشعار مقروءًا، ثم كل الإشعارات.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`inbox`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Items`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`MarkReadAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`inbox`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Items`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`MarkAllReadAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`وتُعيد `,_jsx(_components.code,{children:`GetSummaryAsync`}),` عدد غير المقروء مع أحدث بضعة عناصر، فتحصل على الشارة والمعاينة\nباستدعاء واحد. وفضّلها على إعادة جلب صندوق الوارد كاملًا على فترات — فقراءات صندوق الوارد\nتُحتسب ضمن استخدام خطتك للواجهة البرمجية شأنها شأن أي استدعاء آخر.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`الإشعارات الفورية.`}),` تختلف طريقة الحصول على رمز الجهاز باختلاف المنصّة، وحزمة التطوير\nصريحة بشأن ما تستطيع أن تتولّاه عنك:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),` — تطلب `,_jsx(_components.code,{children:`RegisterThisDeviceAsync()`}),` إذن الإشعارات من النظام وتسجّل رمز APNs الناتج\nفي استدعاء واحد. وتتطلّب وجود `,_jsx(_components.code,{children:`com.unity.mobile.notifications`}),` في المشروع.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),` — احصل على رمز FCM من Firebase بنفسك، ثم مرّره إلى\n`,_jsx(_components.code,{children:`RegisterDeviceTokenAsync(token)`}),`. فعميل Firebase للمراسلة غير قابل للتثبيت عبر UPM، ومن ثمّ\nلا تستطيع حزمة التطوير شحنه كاعتمادية ولا تحاول ذلك عمدًا.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ما عدا ذلك`}),` (الحاسب المكتبي وأجهزة الكونسول والمحرّر) — يرمي الاستدعاءان استثناءً، لأن\nخادم الإشعارات الفورية لا قيمة لديه لتلك المنصّات.`]}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UnityEngine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// iOS: تطلب الإذن وتسجّل رمز APNs في استدعاء واحد.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Application`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`platform`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` RuntimePlatform`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`IPhonePlayer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`RegisterThisDeviceAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Android: رمز FCM الذي تلقّته شيفرة Firebase للمراسلة لديك.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Application`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`platform`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` RuntimePlatform`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Android`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`RegisterDeviceTokenAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fcmToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`و`,_jsx(_components.code,{children:`fcmToken`}),` نصّ الرمز الوارد من Firebase. وأعد التسجيل كلما أصدر النظام رمزًا جديدًا. وتزيل\n`,_jsx(_components.code,{children:`UnregisterDeviceTokenAsync`}),` رمزًا مسجَّلًا.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`تذكيرات تجدولها اللعبة بنفسها.`}),` جدوِل قالبًا ليصل لاحقًا — «امتلأت الطاقة بعد ٤ ساعات» —\nوألغِه إن عاد اللاعب قبل ذلك.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Models`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`ScheduledNotification`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` pending`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`ScheduleAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"energy_refilled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`TimeSpan`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`FromHours`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`CancelScheduledAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`والوسيط الأول هو `,_jsx(_components.strong,{children:`اسم`}),` القالب لا معرّفه. مرّر `,_jsx(_components.code,{children:`variables`}),` لملء عناصر القالب النائبة،\nو`,_jsx(_components.code,{children:`channels`}),` لحصر قنوات التسليم، و`,_jsx(_components.code,{children:`locale`}),` لاختيار لغة بعينها. أما الاسم غير المعروف فيرمي\n`,_jsx(_components.code,{children:`FlockErrorCode.NotificationTemplateNotFound`}),` قبل أن يُجدول أي شيء.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`ما لدى اللاعب من تذكيرات معلّقة.`}),` تسأل `,_jsx(_components.code,{children:`GetScheduledAsync()`}),` الخادمَ، فترى بذلك التذكيرات\nالتي ضُبطت قبل إعادة التثبيت أو على جهاز اللاعب الآخر — لا ما أنشأته هذه النسخة وحدها.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Models`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UnityEngine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`PaginatedResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`ScheduledNotification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`pending`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetScheduledAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`foreach`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`ScheduledNotification`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` s`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Items`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Debug`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`$\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` delivers at `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`DeliverAt`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// تلغي كل تذكير معلّق لدى اللاعب، أيًّا كان مكان ضبطه.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`int`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` cancelled`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`CancelAllScheduledAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`والحالة الافتراضية هي المعلّقة؛ مرّر `,_jsx(_components.code,{children:`ScheduledNotificationStatuses.Delivered`}),` أو `,_jsx(_components.code,{children:`.Canceled`}),`\nلعرض غيرها. وتبقى `,_jsx(_components.code,{children:`GetPendingSchedules()`}),` بديلًا متزامنًا لا يحتاج شبكة، يغطّي ما جدولته `,_jsx(_components.strong,{children:`هذه\nالنسخة`}),` — مفيد دون اتصال، لكن فضّل `,_jsx(_components.code,{children:`GetScheduledAsync`}),` متى أمكن الوصول إلى الخادم.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`قراءة الكتالوج.`}),` تسرد `,_jsx(_components.code,{children:`GetTemplatesAsync()`}),` القوالب التي يمكن للعبتك جدولتها، وتجلب\n`,_jsx(_components.code,{children:`GetTemplateByNameAsync(name, locale)`}),` قالبًا واحدًا. وكلتاهما على نطاق اللعبة لا اللاعب،\nولذلك تعملان دون تسجيل دخول بخلاف بقية هذا المزوّد.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`التفاعل مع الوصول.`}),` يُطلَق `,_jsx(_components.code,{children:`FlockEvents.OnNotificationReceived`}),` مرة واحدة لكل إشعار لم\nتعرضه حزمة التطوير من قبل، من الأقدم إلى الأحدث. وهو يعتمد على عمليات الجلب التي تجريها\nلعبتك أصلًا ولا يضيف أي حركة شبكية — إذ لا توجد قناة لحظية، وحزمة التطوير لا تستقصي عمدًا.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Models`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`using`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UnityEngine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` InboxBadge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` : `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`MonoBehaviour`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` private`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` void`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` OnEnable`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockEvents`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`OnNotificationReceived`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ShowToast`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` private`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` void`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` OnDisable`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` FlockEvents`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`OnNotificationReceived`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ShowToast`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` private`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` void`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` ShowToast`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Notification`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Debug`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`$\"New notification: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`notification`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Title`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Tab,{title:`Unreal`,id:`unreal`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`صندوق الوارد.`}),` اجلب إشعارات اللاعب المسجَّل دخوله، واعرض شارة غير المقروء، وضع العناصر\nكمقروءة واحدًا تلو الآخر أو دفعة واحدة.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`cpp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`cpp`,children:_jsxs(_components.code,{language:`cpp`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`#include`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"FlockSubsystem.h\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`FFlockNotificationProvider`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Notifications `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UFlockSubsystem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetNotificationProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetNotifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`FFlockNotificationPage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Page`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Page.Value.Total is the whole inbox; Page.Value.Items is this page.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetSummary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`FFlockNotificationSummary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Summary`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Summary.Value.UnreadCount, plus the newest few in Summary.Value.Items.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// NotificationId: an item's Id from the page.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`MarkRead`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(NotificationId, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`nullptr`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`MarkAllRead`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`nullptr`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`وتُعيد `,_jsx(_components.code,{children:`GetSummary`}),` عدد غير المقروء مع أحدث بضعة عناصر، فتحصل على الشارة والمعاينة باستدعاء\nواحد. وفضّلها على إعادة جلب صندوق الوارد كاملًا على فترات — فقراءات صندوق الوارد تُحتسب ضمن\nاستخدام خطتك للواجهة البرمجية شأنها شأن أي استدعاء آخر.`]}),_jsxs(_components.p,{children:[`وقراءات صندوق الوارد مدعومة بالتخزين المؤقت دون اتصال، فتعرض شاشة الإشعارات آخر الرسائل\nالمعروفة عند انقطاع الشبكة بدل رسالة خطأ. أما استدعاءات وضع العلامة كمقروء فلا تُصفّ `,_jsx(_components.strong,{children:`أبدًا`}),`\nللإرسال لاحقًا: فإيصال قراءة يُعاد إرساله بعد ساعة سيضع علامة مقروء على رسائل لم يرها اللاعب.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`الإشعارات الفورية.`}),` تسجّل حزمة التطوير رمز الجهاز ولا تجلبه. احصل على الرمز من إضافة\nالإشعارات لديك — `,_jsx(_components.code,{children:`On Token Received`}),` في Firebase Cloud Messaging، أو OneSignal — ومرّر النص:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`cpp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`cpp`,children:_jsxs(_components.code,{language:`cpp`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Token: the string your push plugin hands you.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`RegisterDeviceToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(Token, [](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`FFlockDeviceToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {});`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`وتُؤخذ المنصّة من الإصدار قيد التشغيل. أما على الحاسب المكتبي وأجهزة الكونسول وداخل المحرّر\nفيفشل الاستدعاء بخطأ تحقّق بدل تخمين منصّة — إذ إن الرمز المسجَّل تحت منصّة خاطئة يُقبل ثم لا\nيُسلَّم أبدًا. استدعِ `,_jsx(_components.code,{children:`Flock Get Current Device Platform`}),` أولًا لإخفاء خيار «تفعيل الإشعارات»\nحيث لا تعمل الإشعارات الفورية. وتزيل `,_jsx(_components.code,{children:`UnregisterDeviceToken`}),` رمزًا مسجَّلًا؛ وأعد التسجيل كلما\nأصدر النظام رمزًا جديدًا.`]}),_jsx(_components.p,{children:`ويختلف مصدر الرمز باختلاف المنصّة:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS — لا تحتاج شيئًا إضافيًا.`}),` إذ يوفّر Unreal رمز APNs بنفسه، ويتخاطب Flock مع APNs\nمباشرةً، فلا وجود لـ Firebase في هذا المسار. اربط\n`,_jsx(_components.code,{children:`FCoreDelegates::ApplicationRegisteredForRemoteNotificationsDelegate`}),`، وحوّل البايتات إلى\nصيغة ست عشرية، ثم مرّر النص.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android — إضافة قائمة على Firebase، في الوقت الحالي.`}),` فإضافة Unreal الخاصة بالإشعارات على\nAndroid مبنية على Google Cloud Messaging التي أوقفتها Google عام 2019.`]}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`الحصول المدمج على الرمز قيد التطوير`}),` — غلاف باستدعاء واحد على iOS وربط أصلي على Android —\nبحيث لا تحتاج الإشعارات الفورية إلى إضافة خارجية. ولن يتغيّر `,_jsx(_components.code,{children:`RegisterDeviceToken`}),` عند وصولهما،\nوإنما مصدر النص فقط.`]})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`تذكيرات تجدولها اللعبة بنفسها.`}),` جدوِل قالبًا ليصل لاحقًا — «امتلأت الطاقة بعد ٤ ساعات» —\nوألغِه إن عاد اللاعب قبل ذلك.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`cpp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`cpp`,children:_jsxs(_components.code,{language:`cpp`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` TWeakObjectPtr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`UFlockSubsystem`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Flock `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UFlockSubsystem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetNotificationProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`ScheduleByTemplateName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`TEXT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"energy_refilled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` FDateTime`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`UtcNow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`+`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` FTimespan`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`FromHours`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`FFlockScheduledNotification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // The player came back first: cancel it with the id the schedule returned.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`bSuccess`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`IsValid`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`())`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Flock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetNotificationProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`CancelScheduled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`nullptr`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`]})})}),_jsxs(_components.p,{children:[`والوسيط الأول هو `,_jsx(_components.strong,{children:`اسم`}),` القالب لا معرّفه — إذ يُستخرج المعرّف داخليًا ويُحفظ في الذاكرة.\nمرّر `,_jsx(_components.code,{children:`Variables`}),` لملء عناصر القالب النائبة، و`,_jsx(_components.code,{children:`Channels`}),` لحصر قنوات التسليم؛ واترك أيًّا منهما\nفارغًا فتُطبَّق إعدادات القالب الافتراضية. أما الاسم غير المعروف فيفشل بخطأ تحقّق قبل أن\nيُجدول أي شيء.`]}),_jsx(_components.p,{children:`ولا يُعاد إرسال الجدولة بعد إخفاق غامض، حتى لا يترك انقطاع شبكي عابر لدى اللاعب تذكيرين\nمتطابقين. أما الإلغاء فعمليته آمنة التكرار.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`قراءة الكتالوج.`}),` تسرد `,_jsx(_components.code,{children:`GetTemplates()`}),` القوالب التي يمكن للعبتك جدولتها، وتجلب\n`,_jsx(_components.code,{children:`GetTemplateByName(Name, Locale)`}),` قالبًا واحدًا. وكلتاهما على نطاق اللعبة لا اللاعب، ولذلك\nتعملان دون تسجيل دخول بخلاف بقية هذا المزوّد.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`ما لدى اللاعب من تذكيرات معلّقة.`}),` تسأل `,_jsx(_components.code,{children:`GetScheduled()`}),` الخادمَ، فترى بذلك التذكيرات التي ضُبطت\nقبل إعادة التثبيت أو على جهاز اللاعب الآخر — لا ما أنشأته هذه النسخة وحدها.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`cpp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`cpp`,children:_jsxs(_components.code,{language:`cpp`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetScheduled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`FFlockScheduledNotificationPage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` FFlockScheduledNotification`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Entry : `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Pending`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Items`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Entry.Id is what Cancel Scheduled Notification takes.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Cancels every pending reminder the player has, wherever it was set.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Notifications`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`CancelAllScheduled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([](`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`TFlockResult`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`int32`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`Result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` /* Result.Value cancelled */`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`والحالة الافتراضية هي «معلّق»؛ ومرّر `,_jsx(_components.code,{children:`FlockScheduledNotificationStatuses::Delivered`}),` أو\n`,_jsx(_components.code,{children:`::Canceled`}),` لعرض غيرها. وفي Blueprint هذه هي عقدة `,_jsx(_components.strong,{children:`Flock Get Scheduled Notifications`}),`، ويأخذ\nطرفها `,_jsx(_components.code,{children:`Status`}),` قيمة «معلّق» افتراضيًا — غذِّه من عقد `,_jsx(_components.em,{children:`Flock Schedule Status`}),` بدل كتابة القيمة،\nفالتهجئة على السلك هي `,_jsx(_components.code,{children:`canceled`}),` بلام واحدة.`]}),_jsx(_components.p,{children:`ولا تُخزَّن القائمة مؤقتًا أبدًا: إذ يُسلَّم التذكير من جهة الخادم دون ما يُعلم العميل، فالصفحة\nالمخزَّنة ستعرض تذكيرًا انطلق فعلًا على أنه ما يزال معلّقًا. وهي تحتاج إلى شبكة وإلى لاعب مسجَّل\nالدخول.`}),_jsxs(_components.p,{children:[`وتبقى `,_jsx(_components.code,{children:`GetPendingSchedules()`}),` بديلًا متزامنًا لا يحتاج شبكة، يغطّي ما جدولته `,_jsx(_components.strong,{children:`هذه النسخة`}),` —\nمفيد دون اتصال، لكن فضّل `,_jsx(_components.code,{children:`GetScheduled`}),` متى أمكن الوصول إلى الخادم. ولا تلجأ\n`,_jsx(_components.code,{children:`CancelAllScheduled`}),` إليه إلا عند فشل القراءة من الخادم؛ ولا تُدمج القائمتان أبدًا.`]}),_jsxs(_components.p,{children:[`وفي Blueprint هذه العقد هي `,_jsx(_components.strong,{children:`Flock Get Scheduled Notifications`}),` و`,_jsx(_components.strong,{children:`Flock Cancel All Scheduled\nNotifications`}),` و`,_jsx(_components.strong,{children:`Flock Get Pending Schedules`}),`. ويأخذ الطرف `,_jsx(_components.code,{children:`Status`}),` قيمة «معلّق» افتراضيًا —\nغذِّه من عقد `,_jsx(_components.em,{children:`Flock Schedule Status`}),` بدل كتابة القيمة، فالتهجئة على السلك هي `,_jsx(_components.code,{children:`canceled`}),` بلام واحدة.\nوعقدة Get Pending Schedules عقدة استدعاء عادية لا غير متزامنة: فهي لا تُجري أي اتصال بالشبكة.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`استخدم `,_jsx(_components.strong,{children:`Flock Cancel All Scheduled Notifications`}),` بدل تكرار `,_jsx(_components.em,{children:`Flock Cancel Scheduled\nNotification`}),` على قائمة. إذ تُطلق حلقة ForEach في Blueprint كل تكرار في الإطار نفسه، ويعيد كل\nإلغاء كتابة قائمة الانتظار المخزَّنة عند اكتماله — فتتسابق عمليات الإلغاء، ويعيد آخرها انتهاءً\nإدخالاتٍ سبق أن أزالها غيره. أما العقدة المخصّصة فتمشي عليها بالتتابع لهذا السبب بالذات.`]})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`التفاعل مع الوصول.`}),` يوفّر مركز الأحداث حدثين يغنيانك عن مقارنة الصفحات بنفسك:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`cpp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`cpp`,children:_jsxs(_components.code,{language:`cpp`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// In AMyActor's class, each handler is a UFUNCTION():`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// void HandleNotification(const FFlockNotification\u0026 Notification);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// void HandleUnreadCount(int32 UnreadCount);`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`UFlockEvents`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Events `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UFlockSubsystem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Get`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetEvents`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`OnNotificationReceived`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`AddDynamic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`AMyActor`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::HandleNotification);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`OnUnreadCountChanged`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`AddDynamic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`AMyActor`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`::HandleUnreadCount);`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`يُطلق `,_jsx(_components.code,{children:`OnNotificationReceived`}),` مرة واحدة لكل إشعار لم تعرضه الحزمة من قبل، من الأقدم إلى\nالأحدث. ويُطلق `,_jsx(_components.code,{children:`OnUnreadCountChanged`}),` كلما أبلغ الخادم بعدد — عند جلب عدد غير المقروء أو\nالملخّص، أو عند تعليم الكل كمقروء. وكلاهما يعتمد على عمليات الجلب التي تجريها لعبتك أصلًا ولا\nيضيف أي حركة شبكية: فلا توجد قناة لحظية، والحزمة لا تستطلع الخادم عمدًا، ولذلك يعني «الوصول»\n`,_jsx(_components.em,{children:`أول ظهور في عملية قراءة`}),`. وأول عملية جلب بعد تثبيت جديد صامتة، حتى لا يصل صندوق وارد قائم\nدفعةً واحدة من الأحداث عند الإقلاع.`]}),_jsx(Frame,{caption:`أبقِ شارة غير المقروء محدَّثة: اربط On Unread Count Changed مرة واحدة، عند Begin Play.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=2bf89617afb86b290dc889524a789f85`,alt:`يشغّل Event BeginPlay العقدة Bind Event to On Unread Count Changed، وهدفها Flock Get Events (عقدة بلا منافذ تنفيذ)، مربوطةً بحدث مخصّص Unread Changed يُحوَّل Unread Count فيه إلى نص (عقدة تحويل صغيرة) ويذهب إلى Print String`,\"data-og-width\":`831`,width:`831`,\"data-og-height\":`654`,height:`654`,\"data-path\":`images/sdk/unreal/notifications-unread-badge.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=280\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=4d893ad261c0c71dd2a331fa8a14456c 280w, https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=560\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=0686ffdceffa84aadc472748d7b2e5e2 560w, https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=840\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=9c5e93f2fe17ea54b2d0b81525bc9f99 840w, https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=1100\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=496c2664540fbe45f264bca7e6e03ead 1100w, https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=1650\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=366ecaf761d144e423fa623c49961d49 1650w, https://mintcdn.com/qwacks/MKbkfprdtExYWAeD/images/sdk/unreal/notifications-unread-badge.png?w=2500\u0026fit=max\u0026auto=format\u0026n=MKbkfprdtExYWAeD\u0026q=85\u0026s=5386a5ada457bf153b83b0f307fc77e6 2500w`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Blueprint.`}),` لكل استدعاء أعلاه عقدة — `,_jsx(_components.code,{children:`Flock Get Notifications`}),` و`,_jsx(_components.code,{children:`Flock Get Notification Summary`}),` و`,_jsx(_components.code,{children:`Flock Mark Notification Read`}),` و`,_jsx(_components.code,{children:`Flock Schedule Notification`}),` و`,_jsx(_components.code,{children:`Flock Register Device Token`}),` وغيرها — إضافة إلى العقد المساعدة `,_jsx(_components.code,{children:`Is Read`}),` و`,_jsx(_components.code,{children:`Is Pending`}),` و`,_jsx(_components.code,{children:`Is Delivered`}),` و`,_jsx(_components.code,{children:`Is Canceled`}),`، التي لا منافذ تنفيذ لها.\nويمكن ربط الحدثين مباشرة من `,_jsx(_components.code,{children:`Flock Get Events`}),`.`]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`هذه الصفحة عن الرسائل الموجَّهة `,_jsx(_components.strong,{children:`إلى اللاعبين`}),`. أما التنبيهات الموجَّهة إلى فريقك أنت —\nارتفاع الأخطاء، ونتائج الإصدارات — فهي `,_jsx(_components.a,{href:`/ar/guides/developer-alerts`,children:`تنبيهات المطوّرين`}),`.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{Scope,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"الإشعارات","description":"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.","href":"/ar/guides/notifications"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/qwacks/05763fd4e1d53e37/lang-toggle.js"],"subdomain":"qwacks","siteName":"Qwacks","title":"الإشعارات - Qwacks","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guides/notifications","matchLevel":1},"ar":{"href":"/ar/guides/notifications","matchLevel":0}}},"lastModified":"2026-11-11T19:01:52.266Z","originalFileLocation":"ar/guides/notifications.mdx","locale":"ar"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Qwacks\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"الإشعارات - Qwacks\">\u003cmeta data-mint-head property=\"og:description\" content=\"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Qwacks\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qwacks.com/ar/guides/notifications\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qwacks.mintlify.site/_mintlify/api/og/v2?division=%D8%A7%D9%84%D8%AA%D9%88%D8%A7%D8%B5%D9%84+%D9%85%D8%B9+%D8%A7%D9%84%D9%84%D8%A7%D8%B9%D8%A8%D9%8A%D9%86\u0026amp;title=%D8%A7%D9%84%D8%A5%D8%B4%D8%B9%D8%A7%D8%B1%D8%A7%D8%AA\u0026amp;description=%D8%A3%D8%B1%D8%B3%D9%84+%D8%B1%D8%B3%D8%A7%D8%A6%D9%84+%D8%A5%D9%84%D9%89+%D9%84%D8%A7%D8%B9%D8%A8%D9%8A%D9%83+%E2%80%94+%D8%B5%D9%86%D8%AF%D9%88%D9%82+%D8%A7%D9%84%D9%88%D8%A7%D8%B1%D8%AF+%D8%AF%D8%A7%D8%AE%D9%84+%D8%A7%D9%84%D9%84%D8%B9%D8%A8%D8%A9%D8%8C+%D8%A3%D9%88+%D8%A7%D9%84%D8%A8%D8%B1%D9%8A%D8%AF+%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A%D8%8C+%D8%A3%D9%88+%D8%A7%D9%84%D8%A5%D8%B4%D8%B9%D8%A7%D8%B1%D8%A7%D8%AA+%D8%A7%D9%84%D9%81%D9%88%D8%B1%D9%8A%D8%A9.\u0026amp;theme=7cf102a658812adb3feebdf0\u0026amp;signature=174472bf09a3cf050dac7bd43cef634ebdbab38dbbb09b1632218828296c6c60\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"الإشعارات - Qwacks\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qwacks.mintlify.site/_mintlify/api/og/v2?division=%D8%A7%D9%84%D8%AA%D9%88%D8%A7%D8%B5%D9%84+%D9%85%D8%B9+%D8%A7%D9%84%D9%84%D8%A7%D8%B9%D8%A8%D9%8A%D9%86\u0026amp;title=%D8%A7%D9%84%D8%A5%D8%B4%D8%B9%D8%A7%D8%B1%D8%A7%D8%AA\u0026amp;description=%D8%A3%D8%B1%D8%B3%D9%84+%D8%B1%D8%B3%D8%A7%D8%A6%D9%84+%D8%A5%D9%84%D9%89+%D9%84%D8%A7%D8%B9%D8%A8%D9%8A%D9%83+%E2%80%94+%D8%B5%D9%86%D8%AF%D9%88%D9%82+%D8%A7%D9%84%D9%88%D8%A7%D8%B1%D8%AF+%D8%AF%D8%A7%D8%AE%D9%84+%D8%A7%D9%84%D9%84%D8%B9%D8%A8%D8%A9%D8%8C+%D8%A3%D9%88+%D8%A7%D9%84%D8%A8%D8%B1%D9%8A%D8%AF+%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A%D8%8C+%D8%A3%D9%88+%D8%A7%D9%84%D8%A5%D8%B4%D8%B9%D8%A7%D8%B1%D8%A7%D8%AA+%D8%A7%D9%84%D9%81%D9%88%D8%B1%D9%8A%D8%A9.\u0026amp;theme=7cf102a658812adb3feebdf0\u0026amp;signature=174472bf09a3cf050dac7bd43cef634ebdbab38dbbb09b1632218828296c6c60\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/qwacks/UqcSWN8cDTjx2Nmd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Qwacks\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0099FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qwacks.com/ar/guides/notifications\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ar/guides/notifications.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.qwacks.com/ar/guides/notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.qwacks.com/guides/notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.qwacks.com/guides/notifications\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.qwacks.com/#organization\",\"name\":\"Qwacks\",\"url\":\"https://docs.qwacks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/icons/qwacks.svg?fit=max\u0026auto=format\u0026n=TGGmq_oWzDacAqHl\u0026q=85\u0026s=2023abb340d6ec576975601525ab2ce9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qwacks.com#website\",\"name\":\"Qwacks\",\"url\":\"https://docs.qwacks.com\",\"publisher\":{\"@id\":\"https://docs.qwacks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qwacks.com/ar/guides/notifications#webpage\",\"url\":\"https://docs.qwacks.com/ar/guides/notifications\",\"name\":\"الإشعارات\",\"description\":\"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\",\"dateModified\":\"2026-11-11T19:01:52.266Z\",\"isPartOf\":{\"@id\":\"https://docs.qwacks.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qwacks.com/ar/guides/notifications#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qwacks.com/ar/guides/notifications#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"الميزات\",\"item\":\"https://docs.qwacks.com/ar/guides/players-and-auth\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"التواصل مع اللاعبين\",\"item\":\"https://docs.qwacks.com/ar/guides/segments\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"الإشعارات\",\"item\":\"https://docs.qwacks.com/ar/guides/notifications\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.qwacks.com/ar/guides/notifications#article\",\"headline\":\"الإشعارات\",\"name\":\"الإشعارات\",\"description\":\"أرسل رسائل إلى لاعبيك — صندوق الوارد داخل اللعبة، أو البريد الإلكتروني، أو الإشعارات الفورية.\",\"url\":\"https://docs.qwacks.com/ar/guides/notifications\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qwacks.com/ar/guides/notifications#webpage\"},\"dateModified\":\"2026-11-11T19:01:52.266Z\",\"publisher\":{\"@id\":\"https://docs.qwacks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qwacks.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Qwacks\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Qwacks\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/ar/guides/notifications.md","siteName":"Qwacks","nav":{"global":null,"languages":[{"language":"en","default":true,"pages":[{"title":"en","href":"/guides/notifications"}]},{"language":"ar","navbar":{"links":[{"href":"https://www.qwacks.com/pricing","label":"الأسعار"},{"href":"https://github.com/QwackStack/FlockUnitySdk/releases","label":"حزمة Unity"},{"href":"https://github.com/QwackStack/FlockUnrealSdk/releases","label":"حزمة Unreal"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://flock-saas.qwacks.com"}},"tabs":[{"tab":"Qwacks","icon":"https://mintlify.s3.us-west-1.amazonaws.com/qwacks/icons/qwacks.svg","pages":[{"title":"Qwacks","href":"/ar/welcome"}]},{"tab":"Flock","icon":"https://mintlify.s3.us-west-1.amazonaws.com/qwacks/icons/flock.svg","groups":[{"group":"بدء الاستخدام","pages":[{"title":"Flock","href":"/ar/introduction"},{"title":"البداية السريعة","href":"/ar/quickstart"},{"title":"المصادقة","href":"/ar/authentication"},{"title":"حزمة تطوير Unity","href":"/ar/sdk/unity"},{"title":"حزمة تطوير Unreal","href":"/ar/sdk/unreal"}]},{"group":"المفاهيم","pages":[{"title":"الاستوديوهات والألعاب","href":"/ar/concepts/studios-and-games"},{"title":"الإصدارات","href":"/ar/concepts/versions"},{"title":"اللاعبون","href":"/ar/concepts/players"}]},{"group":"الميزات","pages":[{"group":"اللاعبون","pages":[{"title":"تسجيل الدخول","href":"/ar/guides/players-and-auth"},{"title":"ربط الحسابات","href":"/ar/guides/account-linking"},{"title":"بيانات اللاعب","href":"/ar/guides/player-data"},{"title":"الحظر","href":"/ar/guides/bans"}]},{"group":"التقدّم","pages":[{"title":"الإنجازات","href":"/ar/guides/achievements"},{"title":"لوحات الصدارة","href":"/ar/guides/leaderboards"}]},{"group":"الاقتصاد والمدفوعات","pages":[{"title":"العملات والمحافظ","href":"/ar/guides/currencies-and-wallets"},{"title":"المتاجر والمخزون","href":"/ar/guides/shops-and-inventory"},{"title":"الشراء داخل التطبيق","href":"/ar/guides/real-money-purchases"},{"title":"الدفع عبر الويب","href":"/ar/guides/web-checkout"}]},{"group":"محتوى اللعبة","pages":[{"title":"الإعدادات عن بُعد","href":"/ar/guides/remote-config"},{"title":"تحديثات اللعبة","href":"/ar/guides/game-patches"},{"title":"ملفات اللعبة","href":"/ar/guides/assets"}]},{"group":"التواصل مع اللاعبين","pages":[{"title":"شرائح اللاعبين","description":"جمّع اللاعبين بقواعد لاستهداف الإعدادات والمحتوى ومطابقة اللاعبين.","href":"/ar/guides/segments"},{"title":"الإشعارات","href":"/ar/guides/notifications"}]},{"group":"التحليلات","pages":[{"title":"التحليلات والأحداث","description":"افهم لاعبيك، واعرف ما الذي أخفق.","href":"/ar/guides/analytics-and-events"},{"title":"تعريفات المقاييس","href":"/ar/guides/metric-definitions"},{"title":"تنبيهات المطوّرين","href":"/ar/guides/developer-alerts"}]},{"group":"اللعب الجماعي","pages":[{"title":"اللعب الجماعي","sidebarTitle":"نظرة عامة","href":"/ar/guides/multiplayer"},{"title":"الفرق","href":"/ar/guides/parties"},{"title":"مطابقة اللاعبين","href":"/ar/guides/matchmaking"},{"title":"الجلسات","href":"/ar/guides/sessions"},{"title":"اتصال اللاعبين","href":"/ar/guides/connecting-players"}]}]},{"group":"المرجع","pages":[{"title":"سجل التغييرات","href":"/ar/changelog"}]}]},{"tab":"Protokite","icon":"https://mintlify.s3.us-west-1.amazonaws.com/qwacks/icons/protokite.svg","pages":[{"title":"Protokite","href":"/ar/protokite/getting-started"}]},{"tab":"Data Duck","icon":"https://mintlify.s3.us-west-1.amazonaws.com/qwacks/icons/data-duck.svg","pages":[{"title":"Data Duck","href":"/ar/data-duck/getting-started"}]}]}]},"basePath":"","title":"الإشعارات - Qwacks","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}