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

आवश्यकताएँ

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

इंस्टॉलेशन

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

अपने प्रोजेक्ट की रूट डायरेक्टरी में एक .npmrc फ़ाइल बनाएँ ताकि npm को Mellowtel GitHub पैकेज रजिस्ट्री की ओर इंगित किया जा सके और इंस्टॉल को प्रमाणित किया जा सके:
@mellowtel-inc:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=YOUR_NPM_TOKEN
YOUR_NPM_TOKEN को नीचे दिए गए इंस्टॉल टोकन से बदलें। प्रकट करने के लिए क्लिक करें, फिर इसे अपने क्लिपबोर्ड पर कॉपी करने के लिए कोड ब्लॉक पर कॉपी आइकन का उपयोग करें।
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

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

अपने प्रोजेक्ट रूट से, इलेक्ट्रॉन SDK इंस्टॉल करें:
npm install @mellowtel-inc/mellowtel-electron

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

अपने इलेक्ट्रॉन मुख्य प्रक्रिया फ़ाइल (आमतौर पर main.ts या main.js) में SDK को इम्पोर्ट करें, इसे अपनी कॉन्फ़िगरेशन कुंजी के साथ इंस्टेंटिएट करें, उपयोगकर्ता से सहमति का अनुरोध करें, और फिर सेवा शुरू करने के लिए init() को कॉल करें।
import { app, BrowserWindow } from 'electron';
import Mellowtel from '@mellowtel-inc/mellowtel-electron';


// जब ऐप तैयार हो, विंडो बनाएँ
app.whenReady().then(async () => {
  let win = createWindow();
  
  const mellowtel: Mellowtel = new Mellowtel('YOUR_CONFIGURATION_KEY');

  await mellowtel.requestConsent(win, "3 महीने मुफ्त प्राप्त करें")
  await mellowtel.init()
});
YOUR_CONFIGURATION_KEY को अपने Mellowtel डैशबोर्ड से प्राप्त कुंजी से बदलें।
प्रत्येक कॉल क्या करता है:
  • new Mellowtel(configurationKey, options?) SDK को इंस्टेंटिएट करता है। आज उपलब्ध एकमात्र विकल्प disableLogs है, जो डिफ़ॉल्ट रूप से true होता है। इसे false पर सेट करें ताकि आप अपने टर्मिनल में कनेक्शन स्थिति और अनुरोध गतिविधि देख सकें।
  • requestConsent(window, incentive) एक मूल इलेक्ट्रॉन संदेश बॉक्स प्रस्तुत करता है जो आपके द्वारा पास की गई BrowserWindow से जुड़ा होता है। दूसरा तर्क संवाद का प्रमुख शीर्षक है (उदाहरण के लिए, "3 महीने मुफ्त प्राप्त करें"), जो Mellowtel क्या करता है की एक निश्चित व्याख्या के ऊपर दिखाया जाता है। यदि उपयोगकर्ता स्वीकार करता है तो यह true पर हल करता है, यदि उपयोगकर्ता अस्वीकार करता है या संवाद बंद करता है तो false, और यदि सहमति पहले से ही फाइल पर है तो undefined। SDK स्वचालित रूप से ऑप्ट-इन निर्णय को बनाए रखता है, इसलिए आपको बाद में optIn() कॉल करने की आवश्यकता नहीं है।
  • init() केवल तभी फेंकता है जब configurationKey खाली होता है। यदि उपयोगकर्ता ने ऑप्ट-इन नहीं किया है, तो यह लॉग करता है और चुपचाप लौटता है। अन्यथा यह Mellowtel के बैकएंड के लिए एक WebSocket खोलता है। कॉल रेंडरर UI के लिए गैर-अवरोधक है, इसलिए कनेक्शन स्थापित होने के दौरान विंडो उत्तरदायी रहती हैं।

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

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

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

सहमति संवाद प्रदर्शित करना अनिवार्य है। आपको init() को कॉल करने से पहले उपयोगकर्ताओं को स्पष्ट रूप से ऑप्ट-इन करने देना होगा, और आपको उन्हें किसी भी समय अपने ऑप्ट-इन स्थिति को प्रबंधित करने का तरीका प्रदान करना होगा।
सहमति को संभालने के लिए आपके पास दो रास्ते हैं:
  1. बिल्ट-इन मूल संवाद का उपयोग करें requestConsent(window, incentive) के माध्यम से। यह सबसे तेज़ रास्ता है और यही ऊपर दिखाया गया स्निपेट है। यह आपके प्रोत्साहन कॉपी को शीर्षक के रूप में लेकर एक मूल इलेक्ट्रॉन 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 } } एक कॉल में सभी तीन काउंटर लौटाता है।

शटडाउन और लाइफसाइकल

इलेक्ट्रॉन SDK अपने स्वयं के before-quit या will-quit हैंडलर्स को पंजीकृत नहीं करता है। जब आपका इलेक्ट्रॉन प्रक्रिया समाप्त होती है, तो पृष्ठभूमि 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 cache clean --force चलाकर npm कैश को साफ़ करें और फिर 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 समुदाय में शामिल हों।