Skip to main content

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

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

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

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

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

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

1

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

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

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

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

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

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

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

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