دمج Mellowtel في تطبيق Electron تاعك اللي يخدم على جميع الأنظمة باش تخلي المستخدمين يشاركو النطاق الترددي الزائد تاع الإنترنت تاعهم مقابل مكافآت أو ميزات بريميوم. الـ SDK تاع Electron يخدم في أي بلاصة يخدم فيها Electron (macOS، Windows، وLinux).Documentation Index
Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt
Use this file to discover all available pages before exploring further.
المتطلبات الأساسية
- حساب Mellowtel ومفتاح تكوين (جيب تاعك من لوحة التحكم).
- تطبيق Electron عندو الوصول للعملية الرئيسية.
التثبيت
1. إعداد مصادقة npm
دير ملف.npmrc في الدليل الجذري تاع المشروع تاعك باش توجه npm إلى سجل حزم GitHub تاع Mellowtel وتوثق التثبيت:
YOUR_NPM_TOKEN بالتوكن تاع التثبيت اللي تحت. اضغط باش تكشف، ومن بعد استعمل أيقونة النسخ في كتلة الكود باش تنسخها للحافظة تاعك.
كشف توكن التثبيت
كشف توكن التثبيت
2. تثبيت الحزمة
من الجذر تاع المشروع تاعك، ثبت الـ SDK تاع Electron:3. أضف للكود تاعك
في ملف العملية الرئيسية تاع Electron (عادةًmain.ts أو main.js)، استورد الـ SDK، وكونه بمفتاح التكوين تاعك، واطلب الموافقة من المستخدم، ومن بعد ناد init() باش تبدأ الخدمة.
بدل
YOUR_CONFIGURATION_KEY بالمفتاح من لوحة تحكم Mellowtel تاعك.new Mellowtel(configurationKey, options?)ينشئ الـ SDK. الخيار الوحيد المتاح اليوم هوdisableLogs، اللي الافتراضي تاعوtrue. ديروfalseأثناء الدمج باش تشوف حالة الاتصال ونشاط الطلبات في التيرمينال تاعك.requestConsent(window, incentive)يعرض صندوق رسالة Electron أصلي مربوط بـBrowserWindowاللي تمدو. الحجة الثانية هي العنوان البارز للحوار (مثال،"احصل على 3 أشهر مجانا")، معروض فوق شرح ثابت لوش يدير Mellowtel. يحل لـtrueإذا المستخدم وافق،falseإذا رفض أو غلق الحوار، وundefinedإذا كانت الموافقة مسجلة من قبل. الـ SDK يحفظ قرار الاشتراك تلقائيا، يعني ما تحتاجش تناديoptIn()بعدين.init()يرمي خطأ غير كيconfigurationKeyفارغ. إذا المستخدم ما وافقش، يسجل ويرجع بصمت. وإلا يفتح WebSocket لواجهة Mellowtel الخلفية. النداء غير حاصر لواجهة المستخدم، يعني النوافذ تبقى تستجيب بينما يتأسس الاتصال.
منع مقاطعات حوارات النظام (موصى به)
الـ SDK يجي مع مساعد اختياري،setupMellowtelApp()، اللي يضبط أعلام سطر أوامر Electron باش يمنع حوارات النظام (نوافذ الملء التلقائي، أشرطة الترجمة، مطالبات مصادقة NTLM / Kerberos، تكامل مدير كلمات المرور، تراكبات الوسائط، حوارات التشغيل الأول) اللي ممكن تقاطع المستخدمين تاعك كي نوافذ Mellowtel المخفية تعالج الطلبات في الخلفية.
نادها في أعلى ملف العملية الرئيسية تاعك، قبل app.whenReady()، واستوردها مع التصدير الافتراضي من @mellowtel-inc/mellowtel-electron. شوف README الأصلي للاستخدام الرسمي.
موافقة المستخدم
عندك طريقين باش تتعامل مع الموافقة:- استعمل الحوار الأصلي المدمج عبر
requestConsent(window, incentive). هذا هو الطريق الأسرع واللي يبين في الكود اللي فوق. يعرضdialog.showMessageBoxتاع Electron الأصلي مع نص الحافز تاعك كعنوان ويحفظ قرار المستخدم تلقائيا. - بني واجهة الموافقة تاعك الخاصة وسير الـ SDK عبر
optIn()،optOut()، وgetOptInStatus(). استعمل هذا إذا حبيت علامة تجارية مخصصة، شروحات أغنى، أو توطين يتجاوز اللي يوفره الحوار الأصلي.
وش لازم يتضمن حوار الموافقة تاعك
شرح وش يدير Mellowtel
استعمل لغة بسيطة. مثال: “هذا التطبيق يستعمل Mellowtel باش يشارك النطاق الترددي الزائد تاع الإنترنت تاعك. في المقابل، تحصل على [ميزة/فائدة]. تقدر تلغي الاشتراك في أي وقت من الإعدادات.”
رابط للسياسات
ضمّن روابط لـ شروط الخدمة وسياسة الخصوصية.
خلي المستخدمين يغيرو الموافقة تاعهم لاحقا
Mellowtel يوفر حوار إعدادات مدمج عبرshowConsentSettings(window). يعرض حوار أصلي مع أزرار اشتراك / إلغاء اشتراك اللي تطابق الحالة الحالية تاع المستخدم، ويدير داخليا نداءات optIn() أو optOut() (مع إعادة الاتصال بالـ WebSocket عند الاشتراك) كي المستخدم يغير الخيار تاعه. اربطها بعنصر قائمة أو زر إعدادات في التطبيق تاعك باش المستخدمين يقدرو يرجعو لقرارهم.
إذا فضلت تبني شاشة إعدادات خاصة بيك، ناد getOptInStatus() باش تقرا الحالة الحالية وoptIn() / optOut() باش تغيرها.
مرجع الطرق
فئةMellowtel تعرض الطرق العامة التالية. كلهم متاحين على المثال اللي أنشأته بـ new Mellowtel(configurationKey, options?).
دورة الحياة
init(): Promise<void>يبدأ الخدمة إذا المستخدم وافق، أو يرجع بصمت إذا ما وافقش. يرمي خطأ غير كي مفتاح التكوين فارغ.requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>يعرض الحوار الأصلي للموافقة ويحفظ النتيجة. يرجعtrueعند القبول،falseعند الرفض أو الإغلاق،undefinedإذا كانت الموافقة معطاة من قبل.showConsentSettings(window: BrowserWindow): Promise<void>يعرض الحوار المدمج لإدارة الموافقة. الـ SDK يدير الانتقالات بين الاشتراك / إلغاء الاشتراك داخليا كي المستخدم يغير الخيار تاعه.
optIn(): Promise<void>يعلّم المستخدم كأنه وافق بدون عرض حوار. استعمل هذا غير بعد ما تجمع الموافقة عبر واجهة المستخدم الخاصة بيك.optOut(): Promise<void>يعلّم المستخدم كأنه ما وافقش ويغلق اتصال الـ WebSocket النشط.getOptInStatus(): boolean | undefinedيرجع الحالة الحالية للاشتراك، أوundefinedإذا المستخدم ما دارش اختيار من قبل.getNodeId(): stringيرجع معرف عقدة Mellowtel لهذا التثبيت. مفيد كي تفتح تذاكر الدعم.
electron-store وتبقى بعد إعادة تشغيل التطبيق. اعرضهم في واجهة المستخدم الخاصة بيك إذا حبيت تبين للمستخدمين تأثير الاشتراك تاعهم.
getTotalRequestCount(): numberيرجع العدد الإجمالي للطلبات المعالجة منذ التثبيت.getDailyRequestCount(): numberيرجع عدد الطلبات المعالجة اليوم.getRequestCountForDate(date: string): numberيرجع العدد لتاريخ معينYYYY-MM-DD.getDailyRequestsHistory(): { [date: string]: number }يرجع كل عدد يومي كخريطة.getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }يرجع الأعداد لفترة زمنية.getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }يرجع كل الثلاثة عدادات في نداء واحد.
الإيقاف ودورة الحياة
الـ SDK تاع Electron ما يسجلش معالجاتbefore-quit أو will-quit الخاصة بيه. كي تخرج عملية Electron تاعك، اتصال الـ WebSocket الخلفي يتقطع معها، وما تحتاجش تنظيف صريح من جهتك.
إذا حبيت تقطع اتصال Mellowtel في وسط الجلسة (مثال، كي المستخدم يغير إعداد “توقف مؤقت” في التطبيق تاعك)، ناد optOut(). هذا يمسح علم الاشتراك ويغلق الاتصال النشط. باش تعاود الاتصال، ناد optIn() متبوع بـ init().
استمرارية الموافقة
حالة الاشتراك مخزنة في مسارelectron-store الافتراضي للمنصة:
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
استكشاف الأخطاء وإصلاحها
خطأ "Package not found" أثناء التثبيت
خطأ "Package not found" أثناء التثبيت
- تحقق أن
.npmrcموجود في جذر المشروع، بجانبpackage.json. - تأكد أن التوكن ما عندوش فراغات في البداية أو النهاية.
- امسح ذاكرة التخزين المؤقت لـ npm وأعد المحاولة بتشغيل
npm cache clean --forceمتبوع بـnpm install.
خطأ "Unauthorized" أو 401 أثناء التثبيت
خطأ "Unauthorized" أو 401 أثناء التثبيت
حوار الموافقة ما يظهرش
حوار الموافقة ما يظهرش
- تأكد أنك تنادي
requestConsentبعد ماapp.whenReady()يتحل ومع مرجعBrowserWindowصالح وغير مدمر. - إذا كنت تستعمل
setupMellowtelApp(), تحقق أنه منادى قبلapp.whenReady(), مش بعد.
"init() يخدم بلا أخطاء لكن ما يصرا والو"
"init() يخدم بلا أخطاء لكن ما يصرا والو"
هذا عن قصد.
init() يرجع بصمت كي المستخدم ما وافقش. تحقق getOptInStatus() باش تأكد. إذا رجع undefined أو false, ناد requestConsent الأول. لاحظ أن السجل الداخلي “المستخدم ما وافقش” يبلع كي disableLogs يبقى في الافتراضي تاعه (شوف “السجلات صامتة” تحت), يعني التيرمينال ما يعطيكش إشارة بأي طريقة حتى تقلب هذا العلم.السجلات صامتة
السجلات صامتة
خيار المنشئ
disableLogs الافتراضي تاعه true. مرر { disableLogs: false } كالحجة الثانية للمنشئ أثناء الدمج باش تبين حالة الاتصال ونشاط الطلبات في التيرمينال تاعك. هذا أيضا أسرع طريقة باش تميز “ما وافقش” بصمت (شوف فوق) من فشل اتصال حقيقي.الوقت المقدر للإكمال: 10-15 دقيقة. إذا تحتاج مساعدة أو عندك ملاحظات، تواصل معنا عبر info@mellowtel.com أو انضم لمجتمعنا على Discord.