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 से जुड़ता है ताकि यह अनुरोधों को संसाधित करना शुरू कर सके। कॉल रेंडरर UI के लिए गैर-अवरोधक है, इसलिए कनेक्शन स्थापित होने के दौरान विंडो उत्तरदायी रहती हैं।

वैकल्पिक: अप्रत्याशित OS संकेतों को कम करें

SDK एक वैकल्पिक हेल्पर, setupMellowtelApp(), के साथ आता है जो पृष्ठभूमि अनुरोध कार्य के दौरान अप्रत्याशित OS संकेतों (ऑटोफिल पॉपअप, अनुवाद बार, मीडिया ओवरले, पहली बार चलने वाले डायलॉग) को कम करता है। ये फ्लैग पूरे Electron प्रक्रिया पर लागू होते हैं, केवल Mellowtel पर नहीं। यदि आपका उत्पाद मूल प्रमाणीकरण संकेतों या पासवर्ड-प्रबंधक UI पर निर्भर करता है तो हेल्पर को छोड़ दें। इसे अपने मुख्य प्रक्रिया फ़ाइल के शीर्ष पर, 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() (प्लस ऑप्ट-इन पर Mellowtel से पुनः कनेक्ट करना) को कॉल करता है। इसे अपने ऐप में एक मेनू आइटम या सेटिंग्स बटन से जोड़ें ताकि उपयोगकर्ता अपनी पसंद को फिर से देख सकें। यदि आप अपनी स्वयं की सेटिंग्स स्क्रीन बनाना पसंद करते हैं, तो वर्तमान स्थिति को पढ़ने के लिए getOptInStatus() कॉल करें और इसे बदलने के लिए optIn() / optOut() का उपयोग करें।

विधि संदर्भ

Mellowtel वर्ग निम्नलिखित सार्वजनिक विधियों को उजागर करता है। सभी उस उदाहरण पर उपलब्ध हैं जिसे आपने new Mellowtel(configurationKey, options?) के साथ बनाया है। जीवनचक्र
  • init(): Promise<void> सेवा शुरू करता है यदि उपयोगकर्ता ने ऑप्ट-इन किया है, या यदि नहीं किया है तो शुरू किए बिना लौटता है। केवल तब फेंकता है जब कॉन्फ़िगरेशन कुंजी खाली होती है।
  • shutdown(): Promise<void> जब एप्लिकेशन बंद हो रहा हो तो SDK संसाधनों को साफ करता है। Mellowtel से कनेक्शन बंद करता है, पृथक अनुरोध विंडो जारी करता है, और पृष्ठभूमि टाइमर साफ करता है। उपयोगकर्ता की ऑप्ट-इन प्राथमिकता को बनाए रखता है।
  • 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 } } एक कॉल में सभी तीन काउंटर लौटाता है।

जीवनचक्र और ऐप शटडाउन

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

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

मुख्य एप्लिकेशन विंडो बंद होने पर shutdown() कॉल करें:
केवल Electron के window-all-closed इवेंट पर निर्भर न रहें। पृष्ठभूमि वर्कर्स इसे फायर होने से रोक सकते हैं, इसलिए एक स्पष्ट क्विट (या ऊपर मुख्य विंडो closed हैंडलर) को shutdown() कॉल करने के संकेत के रूप में मानें।

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

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

macOS एप्लिकेशन

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

ऑप्टिंग आउट

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

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

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

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

ऑप्ट-इन आपके ऐप के सामान्य Electron कॉन्फ़िगरेशन में संग्रहीत होता है (अन्य ऐप सेटिंग्स के समान electron-store स्थान):
  • macOS: ~/Library/Application Support/<YourAppName>/config.json
  • Windows: %APPDATA%\<YourAppName>\config.json
  • Linux: ~/.config/<YourAppName>/config.json
विकल्प ऐप अपडेट्स के बाद भी बना रहता है। यदि कोई उपयोगकर्ता अनइंस्टॉल करता है और बाद में उस फ़ोल्डर को हटाए बिना पुनः इंस्टॉल करता है, तो पिछला विकल्प अभी भी वहां हो सकता है — मानक डेस्कटॉप व्यवहार, कुछ ऐसा नहीं जो Mellowtel अपने आप रखता है।

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

  1. सुनिश्चित करें कि आप mellowtel-electron (कोई स्कोप्ड GitHub पैकेज नाम नहीं) इंस्टॉल कर रहे हैं।
  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 समुदाय में शामिल हों।