पूर्वापेक्षाएँ
- एक 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 के बैकएंड के लिए एक WebSocket खोलता है। कॉल रेंडरर UI के लिए गैर-अवरोधक है, इसलिए कनेक्शन स्थापित होने के दौरान विंडोज़ उत्तरदायी रहते हैं।
सिस्टम डायलॉग रुकावटों को रोकना (अनुशंसित)
SDK एक वैकल्पिक हेल्पर के साथ आता है,setupMellowtelApp(), जो सिस्टम डायलॉग्स (ऑटोफिल पॉपअप्स, अनुवाद बार, NTLM / Kerberos ऑथ प्रम्प्ट्स, पासवर्ड मैनेजर इंटीग्रेशन, मीडिया ओवरलेज़, फर्स्ट-रन डायलॉग्स) को दबाने के लिए Electron कमांड-लाइन फ्लैग्स को कॉन्फ़िगर करता है जो अन्यथा आपके उपयोगकर्ताओं को बाधित कर सकते हैं जब Mellowtel की छिपी हुई विंडोज़ पृष्ठभूमि में अनुरोधों को संसाधित करती हैं।
इसे अपने मुख्य प्रक्रिया फ़ाइल के शीर्ष पर कॉल करें, पहले app.whenReady(), और इसे mellowtel-electron से डिफ़ॉल्ट निर्यात के साथ आयात करें। उपस्ट्रीम README में मानक उपयोग देखें।
उपयोगकर्ता सहमति
सहमति को संभालने के लिए आपके पास दो रास्ते हैं:- बिल्ट-इन मूल डायलॉग का उपयोग करें
requestConsent(window, incentive)के माध्यम से। यह सबसे तेज़ रास्ता है और यही ऊपर का स्निपेट दिखाता है। यह आपके प्रोत्साहन कॉपी के साथ एक शीर्षक के रूप में एक मूल Electrondialog.showMessageBoxप्रस्तुत करता है और उपयोगकर्ता के निर्णय को स्वचालित रूप से बनाए रखता है। - अपना खुद का सहमति UI बनाएं और SDK को
optIn(),optOut(), औरgetOptInStatus()के माध्यम से चलाएं। इसका उपयोग करें यदि आप कस्टम ब्रांडिंग, समृद्ध व्याख्याएँ, या मूल डायलॉग से परे स्थानीयकरण चाहते हैं।
आपकी सहमति डायलॉग में क्या शामिल होना चाहिए
1
Mellowtel क्या करता है समझाएं
साधारण भाषा का उपयोग करें। उदाहरण: “यह ऐप आपके अप्रयुक्त इंटरनेट बैंडविड्थ को साझा करने के लिए Mellowtel का उपयोग करता है। बदले में, आपको [लाभ/विशेषता] मिलती है। आप कभी भी सेटिंग्स में ऑप्ट-आउट कर सकते हैं।”
2
उपयोगकर्ताओं को स्पष्ट विकल्प दें
अलग-अलग स्वीकार और अस्वीकार विकल्प शामिल करें।
3
नीतियों के लिए लिंक करें
सेवा की शर्तें और गोपनीयता नीति के लिए लिंक शामिल करें।
उपयोगकर्ताओं को बाद में अपनी सहमति बदलने दें
MellowtelshowConsentSettings(window) के माध्यम से एक बिल्ट-इन सेटिंग्स डायलॉग प्रदान करता है। यह एक मूल डायलॉग प्रस्तुत करता है जिसमें ऑप्ट इन / ऑप्ट आउट बटन होते हैं जो उपयोगकर्ता की वर्तमान स्थिति से मेल खाते हैं, और जब उपयोगकर्ता टॉगल करता है तो आंतरिक रूप से optIn() या optOut() (प्लस ऑप्ट-इन पर WebSocket को फिर से कनेक्ट करना) को कॉल करता है। इसे अपने ऐप में एक मेनू आइटम या सेटिंग्स बटन से जोड़ें ताकि उपयोगकर्ता अपने विकल्प को फिर से देख सकें।
यदि आप अपनी खुद की सेटिंग्स स्क्रीन बनाना पसंद करते हैं, तो वर्तमान स्थिति को पढ़ने के लिए getOptInStatus() को कॉल करें और इसे बदलने के लिए optIn() / optOut() को कॉल करें।
विधि संदर्भ
Mellowtel क्लास निम्नलिखित सार्वजनिक विधियों को उजागर करता है। सभी उस इंस्टेंस पर उपलब्ध हैं जिसे आपने new Mellowtel(configurationKey, options?) के साथ बनाया है।
जीवनचक्र
init(): Promise<void>सेवा शुरू करता है यदि उपयोगकर्ता ने ऑप्ट-इन किया है, या चुपचाप जल्दी लौटता है यदि नहीं। केवल तब फेंकता है जब कॉन्फ़िगरेशन कुंजी खाली होती है।shutdown(): Promise<void>एप्लिकेशन बंद होने पर SDK संसाधनों को साफ करता है। WebSocket को बंद करता है, छिपी हुई कार्यकर्ता विंडोज़ को नष्ट करता है, और पृष्ठभूमि टाइमर को साफ करता है। उपयोगकर्ता की ऑप्ट-इन प्राथमिकता को बनाए रखता है।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 } }एक कॉल में सभी तीन काउंटर लौटाता है।
जीवनचक्र और ऐप बंद करना
अपना पहला अनुरोध संसाधित करने के बाद, Mellowtel छिपी हुई Electron कार्यकर्ता विंडोज़ बना सकता है। होस्ट एप्लिकेशन कोshutdown() कॉल करना चाहिए जब एप्लिकेशन वास्तव में बंद हो रहा हो।
shutdown():
- WebSocket कनेक्शन को बंद करता है।
- छिपी हुई कार्यकर्ता विंडोज़ को नष्ट करता है।
- पृष्ठभूमि टाइमर और नेटवर्क संसाधनों को साफ करता है।
- उपयोगकर्ता की ऑप्ट-इन प्राथमिकता को बनाए रखता है।
सिंगल-विंडो एप्लिकेशन
मुख्य एप्लिकेशन विंडो बंद होने परshutdown() कॉल करें:
window-all-closed इवेंट पर निर्भर न रहें क्योंकि Mellowtel की छिपी हुई कार्यकर्ता विंडोज़ इसे फायर होने से रोक सकती हैं।
ट्रे एप्लिकेशन
केवल विंडो को सिस्टम ट्रे में छिपाने परshutdown() कॉल न करें। इसे स्पष्ट Quit क्रिया से कॉल करें:
macOS एप्लिकेशन
यदि एप्लिकेशन अपनी विंडोज़ बंद होने के बाद सक्रिय रहता है, तोshutdown() केवल तभी कॉल करें जब उपयोगकर्ता वास्तव में एप्लिकेशन को छोड़ता है।
ऑप्टिंग आउट
optOut() पहले से ही पूर्ण सफाई करता है:
shutdown() कॉल करने की आवश्यकता नहीं है। shutdown() के विपरीत, optOut() सहेजी गई सहमति प्राथमिकता को भी बदलता है।
फिर से शुरू करना
shutdown() या optOut() के बाद, Mellowtel को फिर से शुरू किया जा सकता है:
सहमति स्थायित्व
ऑप्ट-इन स्थिति प्लेटफ़ॉर्म-डिफ़ॉल्टelectron-store कॉन्फ़िग पथ में संग्रहीत होती है:
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
समस्या निवारण
"Package not found" त्रुटि इंस्टॉल के दौरान
"Package not found" त्रुटि इंस्टॉल के दौरान
- पुष्टि करें कि आप
mellowtel-electronइंस्टॉल कर रहे हैं (कोई स्कोप्ड GitHub Packages नाम नहीं)। - npm कैश को साफ़ करें और
npm cache clean --forceचलाकर पुनः प्रयास करें उसके बादnpm install mellowtel-electron।
सहमति डायलॉग कभी दिखाई नहीं देता
सहमति डायलॉग कभी दिखाई नहीं देता
- सुनिश्चित करें कि आप
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 समुदाय में शामिल हों।