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

पूर्व आवश्यकताएँ

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

स्थापना

1. npm प्रमाणीकरण कॉन्फ़िगर करें

अपने प्रोजेक्ट की रूट डायरेक्टरी में एक .npmrc फ़ाइल बनाएं ताकि npm को Mellowtel GitHub Packages रजिस्ट्री पर इंगित किया जा सके और स्थापना को प्रमाणित किया जा सके:
YOUR_NPM_TOKEN को नीचे दिए गए इंस्टॉल टोकन से बदलें। प्रकट करने के लिए क्लिक करें, फिर इसे अपने क्लिपबोर्ड पर कॉपी करने के लिए कोड ब्लॉक पर कॉपी आइकन का उपयोग करें।

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

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

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 खाली हो। यदि उपयोगकर्ता ने ऑप्ट-इन नहीं किया है, तो यह लॉग करता है और चुपचाप लौटता है। अन्यथा यह Mellowtel के बैकएंड के लिए एक WebSocket खोलता है। कॉल रेंडरर UI के लिए गैर-अवरोधक है, इसलिए जब कनेक्शन स्थापित होता है तब भी विंडो उत्तरदायी रहती हैं।

सिस्टम संवाद व्यवधानों को रोकना (अनुशंसित)

SDK एक वैकल्पिक हेल्पर setupMellowtelApp() के साथ आता है, जो Electron कमांड-लाइन फ्लैग्स को कॉन्फ़िगर करता है ताकि सिस्टम संवाद (ऑटोफिल पॉपअप, अनुवाद बार, NTLM / Kerberos प्रमाणीकरण प्रॉम्प्ट, पासवर्ड प्रबंधक एकीकरण, मीडिया ओवरले, पहली बार चलने वाले संवाद) को दबाया जा सके जो अन्यथा आपके उपयोगकर्ताओं को बाधित करेंगे जब Mellowtel की छिपी हुई विंडो पृष्ठभूमि में अनुरोधों को संसाधित करती हैं। इसे अपनी मुख्य प्रक्रिया फ़ाइल के शीर्ष पर कॉल करें, पहले app.whenReady(), और इसे @mellowtel-inc/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> सेवा शुरू करता है यदि उपयोगकर्ता ने ऑप्ट-इन किया है, या चुपचाप जल्दी लौटता है यदि नहीं। केवल तभी फेंकता है जब कॉन्फ़िगरेशन कुंजी खाली हो।
  • requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined> बिल्ट-इन मूल सहमति संवाद दिखाता है और परिणाम को बनाए रखता है। स्वीकार करने पर true लौटाता है, अस्वीकार या बंद करने पर false, यदि सहमति पहले से दी गई हो तो undefined
  • showConsentSettings(window: BrowserWindow): Promise<void> बिल्ट-इन प्रबंध-सहमति संवाद दिखाता है। जब उपयोगकर्ता अपनी पसंद टॉगल करता है तो SDK आंतरिक रूप से ऑप्ट-इन / ऑप्ट-आउट संक्रमणों को संभालता है।
मैनुअल ऑप्ट-इन नियंत्रण
  • optIn(): Promise<void> उपयोगकर्ता को ऑप्ट-इन के रूप में चिह्नित करता है बिना कोई संवाद दिखाए। इसका उपयोग केवल अपने स्वयं के UI के माध्यम से सहमति एकत्र करने के बाद करें।
  • optOut(): Promise<void> उपयोगकर्ता को ऑप्ट-आउट के रूप में चिह्नित करता है और सक्रिय WebSocket कनेक्शन को बंद करता है।
  • 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 } } एक कॉल में सभी तीन काउंटर लौटाता है।

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

Electron SDK अपने स्वयं के 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
स्थिति ऐप अपडेट्स के बाद भी बनी रहती है। आपका ऐप अनइंस्टॉल करने से इसे स्वचालित रूप से साफ़ नहीं किया जाएगा जब तक कि आपका अनइंस्टॉलर ऐप की कॉन्फ़िग डायरेक्टरी को स्पष्ट रूप से हटा नहीं देता।

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

  1. सत्यापित करें कि .npmrc प्रोजेक्ट रूट में है, आपके package.json के बगल में।
  2. सुनिश्चित करें कि टोकन में कोई अग्रणी या पिछला व्हाइटस्पेस नहीं है।
  3. npm कैश को साफ़ करें और npm cache clean --force चलाकर और npm install के बाद पुनः प्रयास करें।
  1. सत्यापित करें कि .npmrc में टोकन सही और सक्रिय है। यदि आप सुनिश्चित नहीं हैं, तो info@mellowtel.com से एक नया टोकन अनुरोध करें।
  2. पुष्टि करें कि @mellowtel-inc:registry लाइन मौजूद है और https://npm.pkg.github.com/ की ओर इशारा करती है।
  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 समुदाय में शामिल हों।