كيف تعمل
يرسل Lerix إشعارات Windows عبر خدمة إشعارات Windows (WNS) باستخدام واجهات الإشعارات في Windows App SDK. تستخدم هذه الواجهات تسجيل تطبيق في Microsoft Entra ID كهوية لتطبيقك، وليس حساب متجر Microsoft (Partner Center).- عند تشغيل تطبيقك، يطلب الـ SDK من Windows قناة إشعارات ويسجّلها في Lerix كرمز الجهاز. تنتهي صلاحية القنوات بعد 30 يوماً، لذلك يطلب الـ SDK قناة جديدة مع كل تشغيل.
- عند الإرسال، يحصل Lerix على رمز وصول من Microsoft ببيانات Entra ID الخاصة بك، ويرسل الإشعار إلى WNS كـ toast.
- يعرض Windows الإشعار بنفسه. وعندما يضغط المستخدم عليه، يستقبله تطبيقك في
setOnNotificationTapped.
المتطلبات
- Windows 10 الإصدار 2004 أو أحدث، أو Windows 11.
- Windows App Runtime 1.7 على جهاز المستخدم. أرفق مثبّت Microsoft
WindowsAppRuntimeInstall-x64.exeمع مثبّت تطبيقك. - تسجيل تطبيق في Microsoft Entra ID (مجاني).
- لاستقبال الإشعارات والتطبيق مغلق: هوية حزمة (package identity) عبر sparse package (انظر قسم «الاستلام والتطبيق مغلق» أدناه).
التطبيق المثبّت من ملف
.exe عادي بدون هوية حزمة يستقبل الإشعارات فقط أثناء تشغيله، بما في ذلك عندما يكون مصغّراً في شريط النظام.الخطوة 1: أنشئ تسجيل تطبيق في Microsoft Entra ID
- في Azure portal، افتح Microsoft Entra ID ← App registrations ← New registration.
- في Supported account types، اختر Accounts in any organizational directory (متعدد المستأجرين). إشعارات Windows App SDK تتطلب ذلك.
- بعد الإنشاء، انسخ Application (client) ID وDirectory (tenant) ID.
- افتح Certificates & secrets ← New client secret وانسخ قيمة الـ secret فوراً، فهي تظهر مرة واحدة فقط.
- في صفحة Overview، اضغط الرابط بجانب Managed application in local directory وانسخ Object ID الظاهر هناك. لا تستخدم الـ Object ID الموجود في صفحة التسجيل نفسها، فهو مختلف.
الخطوة 2: أضف البيانات في Lerix
في لوحة التحكم، افتح مشروعك واذهب إلى Notifications ← Settings ← Windows Configuration. أدخل tenant ID وclient ID وclient secret وobject ID، ثم اضغط Save. يتحقق Lerix من البيانات مع Microsoft قبل حفظها. إذا رفضتها Microsoft يظهرWINDOWS_CREDENTIALS_INVALID ولا يُحفظ شيء. يُخزَّن الـ client secret مشفّراً ولا يُعرض مرة أخرى.
يحتاج مشروعك منصة Flutter حتى تظهر شاشات الإشعارات. أضفها من Settings ← General ← Platforms إذا لزم.
الخطوة 3: هيّئ الـ SDK
لا يتغيّر شيء في كود Dart. هيّئ Lerix والإشعارات كما في المنصات الأخرى:init() قناة الإشعارات ويسجّل الجهاز في Lerix. لا يوجد طلب صلاحية في Windows؛ يُرجع requestPermissions() القيمة false فقط إذا أوقف المستخدم إشعارات تطبيقك من Settings في Windows.
للوصول إلى نفس الشخص على Windows وعلى أجهزته الأخرى، اربط التثبيت بمعرّف المستخدم بعد تسجيل الدخول. انظر تعريف المستخدمين.
الاستلام والتطبيق مغلق
حتى يعرض Windows إشعاراتك والتطبيق غير مشغّل، يحتاج التطبيق هوية حزمة. يمكنك الإبقاء على مثبّت.exe العادي وإضافة sparse package (حزمة بموقع خارجي) تعطي التطبيق هذه الهوية.
- احصل على شهادة توقيع كود، فالـ sparse package يجب أن تكون موقّعة.
- أنشئ الـ sparse package وسجّلها من مثبّت تطبيقك. دليل Microsoft: Grant package identity by packaging with external location.
- اطلب من Microsoft ربط الحزمة بتطبيق Entra ID. أرسل بريداً إلى
Win_App_SDK_Push@microsoft.comبعنوان Windows App SDK Push Notifications Mapping Request، وضمّنه Package Family Name وApplication (client) ID وObject ID.
ما يعمل على Windows
لا يمكن أن يتجاوز إشعار Windows حجم 5000 بايت بما فيها البيانات الوصفية. الإرسال الأكبر يفشل بالرمز
PAYLOAD_TOO_LARGE.