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