डिवाइस फ़ीचर
किसी पेज पर स्क्रीनशॉट ब्लॉक करें
अपने ऐप के एक पेज को स्क्रीनशॉट, स्क्रीन रिकॉर्डिंग और रीसेंट्स प्रीव्यू बंद करने दें - और यूज़र के जाने पर इसे वापस दे दें
1यह क्या करता है#
आपके पेज की एक लाइन उस स्क्रीन के लिए Android का स्क्रीन-कैप्चर ब्लॉक चालू कर देती है जिसे यूज़र देख रहा है:
- स्क्रीनशॉट विफल होते हैं (यूज़र को Android का "can't take screenshot" संदेश मिलता है)
- स्क्रीन रिकॉर्डिंग और कास्टिंग में काला फ़्रेम दिखता है
- रीसेंट्स स्क्रीन में ऐप का प्रीव्यू छिप जाता है
यह जो नहीं कर सकता - और Android पर कुछ भी नहीं कर सकता - वह है किसी को दूसरे फ़ोन से स्क्रीन की फ़ोटो लेने से रोकना। इसके लिए आपको वॉटरमार्क चाहिए, फ़्लैग नहीं।
const b = window.WebToApk || null;
// On the sensitive screen:
b?.setSecureScreen(true);
// Leaving it early (a modal closing, a tab switch inside one page):
b?.setSecureScreen(false);
// Current state:
const locked = b?.isSecureScreen();2पूरे ऐप को नहीं, सिर्फ़ एक पेज को सुरक्षित करें#
सुरक्षा उसी पेज की होती है जिसने इसे माँगा। ऐप के कहीं और जाते ही AppMint इसे हटा देता है - नया पेज, pushState route, #hash route - इसलिए आपकी स्टेटमेंट स्क्रीन सुरक्षित रह सकती है जबकि बाकी ऐप में स्क्रीनशॉट सामान्य रूप से लिए जा सकते हैं।
इसका मतलब यह भी है कि रीलोड के बाद पेज को फिर से माँगना होगा: नए डॉक्यूमेंट ने अभी कुछ नहीं माँगा है, और पिछले का जवाब विरासत में लेने से ही ऐप उन स्क्रीन पर लॉक हो जाते हैं जिन्हें कोई सुरक्षित नहीं करना चाहता था।
3सिंगल-पेज ऐप में#
एक पेज के अंदर route बदलने पर सुरक्षा अपने आप हट जाती है, इसलिए आम तरीका यह है कि सुरक्षित व्यू माउंट होते समय इसे लगाएँ और बाकी नेविगेशन पर छोड़ दें।
function showStatement() {
render(statementView);
window.WebToApk?.setSecureScreen(true);
}
// Nothing to undo on the way out — moving to another route
// releases it. Call setSecureScreen(false) yourself only when
// you hide the sensitive content WITHOUT navigating.4इसके लिए टाइमर इस्तेमाल न करें#
एक आम विचार है कि सुरक्षा को हर सेकंड जैसे अंतराल पर दोबारा लगाया जाए, और जब पेज माँगना बंद करे तो उसे खत्म होने दिया जाए। यह काम नहीं करता, और इसका कारण जानना ज़रूरी है: जब यूज़र स्क्रीनशॉट बटन दबाता है तो Android आपके ऐप से पूछता नहीं। फ़्लैग पहले से विंडो पर लगा होना चाहिए। कोई भी सेकंड जब आपका पेज व्यस्त हो, बैकग्राउंड में धीमा हो, या टाइमर टिक के बीच हो, वह ऐसा सेकंड है जिसमें स्क्रीनशॉट सफल हो जाता है।
संवेदनशील सामग्री दिखने पर एक बार माँगें। यूज़र के जाने पर AppMint सुरक्षा हटा देता है।