المتطلبات الأساسية
- حساب Mellowtel و Integration ID من لوحة التحكم. كل تطبيق سطح المكتب عندو Integration ID خاص بيه.
- .NET 10 SDK
- Windows 10 ولا Windows 11
- تطبيق سطح المكتب .NET (Console، WPF، ولا Windows Forms)
حاب تشوف دمج كامل وواقعي قبل ما تربطو في التطبيق تاعك؟ المثال mellowtel-pomodoro-windows على WPF يوريك العملية كاملة من البداية للنهاية: حوار الموافقة، تبديل الإعدادات، ودورة الحياة في الخلفية.
التثبيت
Mellowtel لـ Windows متوفر في NuGet كـMellowtel.Win.
1. تثبيت الحزمة
من دليل المشروع تاعك:PackageReference إلى .csproj تاعك:
2. أضف إلى الكود تاعك
عوض
YOUR_INTEGRATION_ID بـ Integration ID من لوحة التحكم تاع Mellowtel، وحط PluginId كمعرف ثابت للتطبيق تاعك. ShowConsentDialog() هي واجهة المستخدم تاعك اللي ترجع true فقط لما المستخدم يوافق صراحة. شوف موافقة المستخدم تحت.خيارات التكوين
MellowtelOptions يخليك تضبط بعض الأشياء:
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
PluginId | string | "mellowtel-win" | معرف ثابت للتطبيق تاعك. حطو حاجة فريدة. |
MaxDailyRate | int | الافتراضي المدمج | أقصى عدد من الطلبات اللي الـ SDK راح يتعامل معها في اليوم. |
DisableLogs | bool | true | حطها false باش تفعل سجلات الـ SDK أثناء التطوير. |
أمثلة حسب نوع التطبيق
- تطبيق Console
- تطبيق WPF
- تطبيق Windows Forms
مراقبة حالة الاتصال
الـMellowtel عندو حدث ConnectionStateChanged اللي يتفعل كلما يتصل أو ينقطع الـ WebSocket الأساسي مع خادم Mellowtel. الأمثلة على WPF و Windows Forms اللي فوق تشترك فيه باش تدير مؤشر الحالة. الحمولة هي bool وين true يعني متصل و false يعني غير متصل.
الحدث يتفعل في خيط خلفي، لذا الإطارات اللي تفرض الانتماء للخيط لازم تنقل التحديثات إلى خيط الواجهة. في WPF استعمل Dispatcher.Invoke، وفي Windows Forms استعمل Control.Invoke (كلاهما موضح في الأمثلة اللي فوق).
حول نمط
async void OnClosing في WPF. المثال على WPF اللي فوق يستعمل protected override async void OnClosing، اللي هو الشكل الأبسط لكن عندو مشكلة دقيقة: base.OnClosing(e) يتنادى بشكل متزامن بينما StopAsync() مازال ينتظر، لذا النافذة تقدر تغلق قبل ما يكتمل التنظيف. بالنسبة لمعظم التطبيقات هذا عادي لأن العملية تنتهي مباشرة بعدها. إذا كنت تحتاج إيقاف سلس مضمون (مثال، لإرسال التليمترية)، اتبع نمط التأجيل الموثق من Microsoft وين تحط e.Cancel = true، await العمل غير المتزامن تاعك، ثم تغلق النافذة بشكل صريح.موافقة المستخدم
واش لازم يتضمن حوار الموافقة تاعك
شرح واش يدير Mellowtel
استعمل لغة بسيطة. مثال: “هذا التطبيق يستعمل Mellowtel لمشاركة عرض النطاق الترددي غير المستخدم تاعك. هذا يخليك تستفيد من [ميزة/فائدة]. تقدر تلغي الاشتراك في أي وقت من الإعدادات.”
رابط للسياسات
ضمّن روابط لـ شروط الخدمة و سياسة الخصوصية.
خلي المستخدمين يغيرو موافقتهم في الإعدادات
GetOptInDetails() ترجع حالة الاشتراك مع تواريخ الاشتراك والإلغاء:
استكشاف الأخطاء وإصلاحها
خطأ "Package not found"
خطأ "Package not found"
- تأكد أن المشروع تاعك يستهدف .NET 10 أو أحدث.
Mellowtel.Winيتطلبnet10.0. - امسح ذاكرة التخزين المؤقت لـ NuGet واستعد:
خطأ "InvalidOperationException: User has not opted in"
خطأ "InvalidOperationException: User has not opted in"
StartAsync() يتطلب موافقة صريحة. ناد OptIn() بعد ما حوار الموافقة تاعك يرجع نتيجة إيجابية، ثم ناد StartAsync(). للاستئناف الصامت في الإطلاقات اللاحقة، استعمل StartIfOptedInAsync() بدلاً من ذلك، اللي ما يدير والو لما المستخدم ما وافقش.الوقت المقدر للإكمال: 10-15 دقيقة. إذا كنت تحتاج مساعدة أو عندك ملاحظات، تواصل معنا على info@mellowtel.com أو انضم لمجتمعنا على Discord.