Skip to main content
अपने क्रॉस-प्लेटफ़ॉर्म Electron एप्लिकेशन में Mellowtel को एकीकृत करें ताकि उपयोगकर्ता अपने अप्रयुक्त इंटरनेट बैंडविड्थ को पुरस्कार या प्रीमियम सुविधाओं के बदले साझा कर सकें। Electron SDK कहीं भी चलता है जहाँ Electron चलता है (macOS, Windows, और Linux)।
उपयोगकर्ता की सहमति अनिवार्य है। SDK केवल तभी काम करता है जब उपयोगकर्ता ने स्पष्ट रूप से सहमति दी हो। init() चुपचाप जल्दी लौटता है जब कोई सहमति फ़ाइल पर नहीं होती है, इसलिए यदि आप देखते हैं कि SDK त्रुटियों के बिना शुरू होता है लेकिन कभी ट्रैफ़िक नहीं भेजता है, तो सबसे संभावित कारण यह है कि उपयोगकर्ता ने अभी तक सहमति नहीं दी है।

पूर्वापेक्षाएँ

  • एक Mellowtel खाता और कॉन्फ़िगरेशन कुंजी (अपना डैशबोर्ड से प्राप्त करें)।
  • मुख्य प्रक्रिया तक पहुंच के साथ एक Electron एप्लिकेशन।

इंस्टॉलेशन

1. पैकेज इंस्टॉल करें

अपने प्रोजेक्ट रूट से, Electron SDK इंस्टॉल करें:

2. अपने कोड में जोड़ें

अपने Electron मुख्य प्रक्रिया फ़ाइल (आमतौर पर main.ts या main.js) में, SDK को आयात करें, वैकल्पिक रूप से setupMellowtelApp() को ऐप तैयार होने से पहले कॉल करें, अपने कॉन्फ़िगरेशन कुंजी के साथ Mellowtel को इंस्टेंटिएट करें, उपयोगकर्ता से सहमति का अनुरोध करें, और फिर सेवा शुरू करने के लिए 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 खाली होता है। यदि उपयोगकर्ता ने ऑप्ट-इन नहीं किया है, तो यह लॉग करता है और चुपचाप लौटता है। अन्यथा यह Mellowtel के बैकएंड के लिए एक WebSocket खोलता है। कॉल रेंडरर UI के लिए गैर-अवरोधक है, इसलिए कनेक्शन स्थापित होने के दौरान विंडोज़ उत्तरदायी रहते हैं।

सिस्टम डायलॉग रुकावटों को रोकना (अनुशंसित)

SDK एक वैकल्पिक हेल्पर के साथ आता है, setupMellowtelApp(), जो सिस्टम डायलॉग्स (ऑटोफिल पॉपअप्स, अनुवाद बार, NTLM / Kerberos ऑथ प्रम्प्ट्स, पासवर्ड मैनेजर इंटीग्रेशन, मीडिया ओवरलेज़, फर्स्ट-रन डायलॉग्स) को दबाने के लिए Electron कमांड-लाइन फ्लैग्स को कॉन्फ़िगर करता है जो अन्यथा आपके उपयोगकर्ताओं को बाधित कर सकते हैं जब Mellowtel की छिपी हुई विंडोज़ पृष्ठभूमि में अनुरोधों को संसाधित करती हैं। इसे अपने मुख्य प्रक्रिया फ़ाइल के शीर्ष पर कॉल करें, पहले app.whenReady(), और इसे mellowtel-electron से डिफ़ॉल्ट निर्यात के साथ आयात करें। उपस्ट्रीम README में मानक उपयोग देखें।

उपयोगकर्ता सहमति

सहमति डायलॉग प्रदर्शित करना अनिवार्य है। आपको उपयोगकर्ताओं को init() कॉल करने से पहले स्पष्ट रूप से ऑप्ट-इन करने देना होगा, और आपको उन्हें किसी भी समय अपने ऑप्ट-इन स्थिति को प्रबंधित करने का तरीका प्रदान करना होगा।
सहमति को संभालने के लिए आपके पास दो रास्ते हैं:
  1. बिल्ट-इन मूल डायलॉग का उपयोग करें requestConsent(window, incentive) के माध्यम से। यह सबसे तेज़ रास्ता है और यही ऊपर का स्निपेट दिखाता है। यह आपके प्रोत्साहन कॉपी के साथ एक शीर्षक के रूप में एक मूल Electron dialog.showMessageBox प्रस्तुत करता है और उपयोगकर्ता के निर्णय को स्वचालित रूप से बनाए रखता है।
  2. अपना खुद का सहमति UI बनाएं और SDK को optIn(), optOut(), और getOptInStatus() के माध्यम से चलाएं। इसका उपयोग करें यदि आप कस्टम ब्रांडिंग, समृद्ध व्याख्याएँ, या मूल डायलॉग से परे स्थानीयकरण चाहते हैं।

आपकी सहमति डायलॉग में क्या शामिल होना चाहिए

1

Mellowtel क्या करता है समझाएं

साधारण भाषा का उपयोग करें। उदाहरण: “यह ऐप आपके अप्रयुक्त इंटरनेट बैंडविड्थ को साझा करने के लिए Mellowtel का उपयोग करता है। बदले में, आपको [लाभ/विशेषता] मिलती है। आप कभी भी सेटिंग्स में ऑप्ट-आउट कर सकते हैं।”
2

उपयोगकर्ताओं को स्पष्ट विकल्प दें

अलग-अलग स्वीकार और अस्वीकार विकल्प शामिल करें।
3

नीतियों के लिए लिंक करें

सेवा की शर्तें और गोपनीयता नीति के लिए लिंक शामिल करें।

उपयोगकर्ताओं को बाद में अपनी सहमति बदलने दें

Mellowtel showConsentSettings(window) के माध्यम से एक बिल्ट-इन सेटिंग्स डायलॉग प्रदान करता है। यह एक मूल डायलॉग प्रस्तुत करता है जिसमें ऑप्ट इन / ऑप्ट आउट बटन होते हैं जो उपयोगकर्ता की वर्तमान स्थिति से मेल खाते हैं, और जब उपयोगकर्ता टॉगल करता है तो आंतरिक रूप से optIn() या optOut() (प्लस ऑप्ट-इन पर WebSocket को फिर से कनेक्ट करना) को कॉल करता है। इसे अपने ऐप में एक मेनू आइटम या सेटिंग्स बटन से जोड़ें ताकि उपयोगकर्ता अपने विकल्प को फिर से देख सकें। यदि आप अपनी खुद की सेटिंग्स स्क्रीन बनाना पसंद करते हैं, तो वर्तमान स्थिति को पढ़ने के लिए getOptInStatus() को कॉल करें और इसे बदलने के लिए optIn() / optOut() को कॉल करें।

विधि संदर्भ

Mellowtel क्लास निम्नलिखित सार्वजनिक विधियों को उजागर करता है। सभी उस इंस्टेंस पर उपलब्ध हैं जिसे आपने new Mellowtel(configurationKey, options?) के साथ बनाया है। जीवनचक्र
  • init(): Promise<void> सेवा शुरू करता है यदि उपयोगकर्ता ने ऑप्ट-इन किया है, या चुपचाप जल्दी लौटता है यदि नहीं। केवल तब फेंकता है जब कॉन्फ़िगरेशन कुंजी खाली होती है।
  • shutdown(): Promise<void> एप्लिकेशन बंद होने पर SDK संसाधनों को साफ करता है। WebSocket को बंद करता है, छिपी हुई कार्यकर्ता विंडोज़ को नष्ट करता है, और पृष्ठभूमि टाइमर को साफ करता है। उपयोगकर्ता की ऑप्ट-इन प्राथमिकता को बनाए रखता है।
  • requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined> बिल्ट-इन मूल सहमति डायलॉग दिखाता है और परिणाम को बनाए रखता है। स्वीकार करने पर true लौटाता है, अस्वीकार या बंद करने पर false, यदि सहमति पहले ही दी जा चुकी है तो undefined
  • showConsentSettings(window: BrowserWindow): Promise<void> बिल्ट-इन प्रबंध-सहमति डायलॉग दिखाता है। जब उपयोगकर्ता अपनी पसंद टॉगल करता है तो SDK आंतरिक रूप से ऑप्ट-इन / ऑप्ट-आउट संक्रमणों को संभालता है।
मैनुअल ऑप्ट-इन नियंत्रण
  • optIn(): Promise<void> उपयोगकर्ता को ऑप्ट-इन के रूप में चिह्नित करता है बिना डायलॉग दिखाए। इसका उपयोग केवल तभी करें जब आपने अपने खुद के UI के माध्यम से सहमति एकत्र की हो।
  • optOut(): Promise<void> उपयोगकर्ता को ऑप्ट-आउट के रूप में चिह्नित करता है और पूर्ण सफाई करता है (वही संसाधन shutdown() के रूप में, प्लस सहेजी गई सहमति प्राथमिकता को साफ करना)। इसके बाद shutdown() कॉल करने की आवश्यकता नहीं है।
  • getOptInStatus(): boolean | undefined वर्तमान ऑप्ट-इन स्थिति लौटाता है, या undefined यदि उपयोगकर्ता ने कभी कोई विकल्प नहीं बनाया है।
  • getNodeId(): string इस इंस्टॉलेशन के लिए Mellowtel नोड पहचानकर्ता लौटाता है। समर्थन टिकट दाखिल करते समय उपयोगी।
अनुरोध काउंटर अनुरोध गणनाएँ electron-store के माध्यम से स्थानीय रूप से संरक्षित की जाती हैं और ऐप पुनरारंभों के बाद भी बनी रहती हैं। यदि आप उपयोगकर्ताओं को उनके ऑप्ट-इन के प्रभाव को दिखाना चाहते हैं तो उन्हें अपने खुद के UI में सतह पर लाएँ।
  • 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 } } एक कॉल में सभी तीन काउंटर लौटाता है।

जीवनचक्र और ऐप बंद करना

अपना पहला अनुरोध संसाधित करने के बाद, Mellowtel छिपी हुई Electron कार्यकर्ता विंडोज़ बना सकता है। होस्ट एप्लिकेशन को shutdown() कॉल करना चाहिए जब एप्लिकेशन वास्तव में बंद हो रहा हो। shutdown():
  • WebSocket कनेक्शन को बंद करता है।
  • छिपी हुई कार्यकर्ता विंडोज़ को नष्ट करता है।
  • पृष्ठभूमि टाइमर और नेटवर्क संसाधनों को साफ करता है।
  • उपयोगकर्ता की ऑप्ट-इन प्राथमिकता को बनाए रखता है।
shutdown() बनाम optOut(): shutdown() एप्लिकेशन जीवनचक्र सफाई है — सहमति संरक्षित है। optOut() उपयोगकर्ता की सहमति वापस लेता है और सभी संसाधनों को साफ करता है। दोनों को भ्रमित न करें।

सिंगल-विंडो एप्लिकेशन

मुख्य एप्लिकेशन विंडो बंद होने पर shutdown() कॉल करें:
केवल Electron के window-all-closed इवेंट पर निर्भर न रहें क्योंकि Mellowtel की छिपी हुई कार्यकर्ता विंडोज़ इसे फायर होने से रोक सकती हैं।

ट्रे एप्लिकेशन

केवल विंडो को सिस्टम ट्रे में छिपाने पर shutdown() कॉल न करें। इसे स्पष्ट Quit क्रिया से कॉल करें:

macOS एप्लिकेशन

यदि एप्लिकेशन अपनी विंडोज़ बंद होने के बाद सक्रिय रहता है, तो shutdown() केवल तभी कॉल करें जब उपयोगकर्ता वास्तव में एप्लिकेशन को छोड़ता है।

ऑप्टिंग आउट

optOut() पहले से ही पूर्ण सफाई करता है:
इसके बाद shutdown() कॉल करने की आवश्यकता नहीं है। shutdown() के विपरीत, optOut() सहेजी गई सहमति प्राथमिकता को भी बदलता है।

फिर से शुरू करना

shutdown() या optOut() के बाद, Mellowtel को फिर से शुरू किया जा सकता है:

सहमति स्थायित्व

ऑप्ट-इन स्थिति प्लेटफ़ॉर्म-डिफ़ॉल्ट electron-store कॉन्फ़िग पथ में संग्रहीत होती है:
  • macOS: ~/Library/Application Support/<YourAppName>/config.json
  • Windows: %APPDATA%\<YourAppName>\config.json
  • Linux: ~/.config/<YourAppName>/config.json
स्थिति ऐप अपडेट्स के बाद भी बनी रहती है। आपके ऐप को अनइंस्टॉल करने से इसे स्वचालित रूप से साफ़ नहीं किया जाएगा जब तक कि आपका अनइंस्टॉलर ऐप की कॉन्फ़िग डायरेक्टरी को स्पष्ट रूप से हटा नहीं देता।

समस्या निवारण

  1. पुष्टि करें कि आप mellowtel-electron इंस्टॉल कर रहे हैं (कोई स्कोप्ड GitHub Packages नाम नहीं)।
  2. npm कैश को साफ़ करें और npm cache clean --force चलाकर पुनः प्रयास करें उसके बाद npm install mellowtel-electron
  1. सुनिश्चित करें कि आप requestConsent के बाद app.whenReady() को हल कर चुके हैं और एक वैध, गैर-नष्ट BrowserWindow संदर्भ के साथ।
  2. यदि आप setupMellowtelApp() का उपयोग करते हैं, तो सुनिश्चित करें कि इसे पहले app.whenReady() के बाद नहीं, बल्कि पहले कॉल किया गया है।
यह डिज़ाइन द्वारा है। init() चुपचाप जल्दी लौटता है जब उपयोगकर्ता ने ऑप्ट-इन नहीं किया है। पुष्टि करने के लिए getOptInStatus() की जाँच करें। यदि यह undefined या false लौटाता है, तो पहले requestConsent चलाएँ। ध्यान दें कि आंतरिक “उपयोगकर्ता ऑप्ट-इन नहीं है” लॉग निगल लिया जाता है जब disableLogs को उसके डिफ़ॉल्ट पर छोड़ दिया जाता है (नीचे “लॉग्स चुप हैं” देखें), इसलिए टर्मिनल आपको कोई संकेत नहीं देता जब तक कि आप उस ध्वज को फ़्लिप नहीं करते।
disableLogs कंस्ट्रक्टर विकल्प डिफ़ॉल्ट रूप से true है। कनेक्शन स्थिति और अनुरोध गतिविधि को अपने टर्मिनल में सतह पर लाने के लिए एकीकृत करते समय कंस्ट्रक्टर के दूसरे तर्क के रूप में { disableLogs: false } पास करें। यह “ऑप्ट-इन नहीं है” चुपचाप कोई-ऑप (ऊपर देखें) और एक वास्तविक कनेक्शन विफलता के बीच अंतर करने का सबसे तेज़ तरीका भी है।

पूरा करने का अनुमानित समय: 10-15 मिनट। यदि आपको सहायता की आवश्यकता है या आपके पास प्रतिक्रिया है, तो हमसे info@mellowtel.com पर संपर्क करें या हमारे Discord समुदाय में शामिल हों।