पूर्व आवश्यकताएँ
- एक 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 में मानक उपयोग के लिए देखें।
उपयोगकर्ता सहमति
आपके पास सहमति को संभालने के लिए दो रास्ते हैं:- बिल्ट-इन मूल संवाद का उपयोग करें
requestConsent(window, incentive)के माध्यम से। यह सबसे तेज़ रास्ता है और यही ऊपर दिया गया स्निपेट दिखाता है। यह आपके प्रोत्साहन कॉपी को शीर्षक के रूप में प्रदर्शित करते हुए एक मूल Electrondialog.showMessageBoxप्रस्तुत करता है और उपयोगकर्ता के निर्णय को स्वचालित रूप से बनाए रखता है। - अपना स्वयं का सहमति UI बनाएं और SDK को
optIn(),optOut(), औरgetOptInStatus()के माध्यम से चलाएं। इसका उपयोग करें यदि आप कस्टम ब्रांडिंग, समृद्ध स्पष्टीकरण, या मूल संवाद से परे स्थानीयकरण चाहते हैं।
आपके सहमति संवाद में क्या शामिल होना चाहिए
Mellowtel क्या करता है, समझाएं
सरल भाषा का उपयोग करें। उदाहरण: “यह ऐप Mellowtel का उपयोग आपके अप्रयुक्त इंटरनेट बैंडविड्थ को साझा करने के लिए करता है। बदले में, आपको [लाभ/विशेषता] मिलती है। आप किसी भी समय सेटिंग्स में ऑप्ट-आउट कर सकते हैं।”
नीतियों के लिए लिंक शामिल करें
सेवा की शर्तें और गोपनीयता नीति के लिंक शामिल करें।
उपयोगकर्ताओं को बाद में अपनी सहमति बदलने दें
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
समस्या निवारण
"पैकेज नहीं मिला" त्रुटि स्थापना के दौरान
"पैकेज नहीं मिला" त्रुटि स्थापना के दौरान
- सत्यापित करें कि
.npmrcप्रोजेक्ट रूट में है, आपकेpackage.jsonके बगल में। - सुनिश्चित करें कि टोकन में कोई अग्रणी या पिछला व्हाइटस्पेस नहीं है।
- npm कैश को साफ़ करें और
npm cache clean --forceचलाकर औरnpm installके बाद पुनः प्रयास करें।
"अनधिकृत" या 401 स्थापना के दौरान
"अनधिकृत" या 401 स्थापना के दौरान
- सत्यापित करें कि
.npmrcमें टोकन सही और सक्रिय है। यदि आप सुनिश्चित नहीं हैं, तो info@mellowtel.com से एक नया टोकन अनुरोध करें। - पुष्टि करें कि
@mellowtel-inc:registryलाइन मौजूद है औरhttps://npm.pkg.github.com/की ओर इशारा करती है।
सहमति संवाद कभी प्रकट नहीं होता
सहमति संवाद कभी प्रकट नहीं होता
- सुनिश्चित करें कि आप
requestConsentके बादapp.whenReady()को कॉल करते हैं और एक मान्य, गैर-विनष्टBrowserWindowसंदर्भ के साथ। - यदि आप
setupMellowtelApp()का उपयोग करते हैं, तो सत्यापित करें कि इसे पहलेapp.whenReady()के बाद नहीं, बल्कि पहले कॉल किया गया है।
"init() त्रुटियों के बिना चलता है लेकिन कुछ नहीं होता"
"init() त्रुटियों के बिना चलता है लेकिन कुछ नहीं होता"
यह डिजाइन द्वारा है।
init() चुपचाप जल्दी लौटता है जब उपयोगकर्ता ने ऑप्ट-इन नहीं किया है। पुष्टि करने के लिए getOptInStatus() की जाँच करें। यदि यह undefined या false लौटाता है, तो पहले requestConsent चलाएँ। ध्यान दें कि आंतरिक “उपयोगकर्ता ऑप्ट-इन नहीं है” लॉग निगल लिया जाता है जब disableLogs को उसके डिफ़ॉल्ट पर छोड़ दिया जाता है (नीचे “लॉग्स चुप हैं” देखें), इसलिए टर्मिनल आपको कोई संकेत नहीं देता जब तक आप उस फ्लैग को नहीं बदलते।लॉग्स चुप हैं
लॉग्स चुप हैं
disableLogs कंस्ट्रक्टर विकल्प डिफ़ॉल्ट रूप से true है। कनेक्शन स्थिति और अनुरोध गतिविधि को अपने टर्मिनल में सतह पर लाने के लिए एकीकृत करते समय कंस्ट्रक्टर के दूसरे तर्क के रूप में { disableLogs: false } पास करें। यह एक “ऑप्ट-इन नहीं” चुपचाप कोई-ऑप (ऊपर देखें) और एक वास्तविक कनेक्शन विफलता के बीच अंतर करने का सबसे तेज़ तरीका भी है।पूरा करने का अनुमानित समय: 10-15 मिनट। यदि आपको सहायता की आवश्यकता है या आपके पास कोई प्रतिक्रिया है, तो हमसे info@mellowtel.com पर संपर्क करें या हमारे Discord समुदाय में शामिल हों।