قابلیتهای دستگاه
مسدود کردن اسکرینشات در یک صفحه
اجازه دهید یک صفحه از اپلیکیشن شما اسکرینشات، ضبط صفحه و پیشنمایش برنامههای اخیر را خاموش کند - و وقتی کاربر رفت، آن را پس بدهد
1این قابلیت چه کاری میکند#
یک خط از صفحه شما، مسدودسازی ضبط صفحه در اندروید را برای صفحهای که کاربر میبیند روشن میکند:
- اسکرینشات ناموفق میشود (کاربر پیام «امکان گرفتن اسکرینشات نیست» اندروید را میبیند)
- ضبط صفحه و پخش روی تلویزیون یک قاب سیاه نشان میدهند
- پیشنمایش اپلیکیشن در صفحه برنامههای اخیر پنهان میشود
آنچه این قابلیت نمیتواند انجام دهد - و هیچ چیز در اندروید هم نمیتواند - جلوگیری از عکس گرفتن کسی از صفحه با گوشی دیگر است. اگر به این نیاز دارید، به واترمارک نیاز دارید، نه یک پرچم.
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 یا مسیر #hash - آن را آزاد میکند؛ پس صفحه صورتحساب شما میتواند محافظتشده باشد، در حالی که بقیه اپلیکیشن بهطور عادی اسکرینشات میگیرد.
این یعنی صفحه باید بعد از بارگذاری مجدد دوباره درخواست کند: سند تازه هنوز چیزی درخواست نکرده است و به ارث بردن پاسخ قبلی همان چیزی است که باعث میشود اپلیکیشنها روی صفحههایی قفل شوند که هیچکس قصد محافظت از آنها را نداشته است.
3در یک اپلیکیشن تکصفحهای#
تغییر مسیر داخل یک صفحه، محافظت را خودکار آزاد میکند؛ بنابراین الگوی معمول این است که هنگام نمایش صفحه محافظتشده آن را فعال کنید و بقیه را به ناوبری بسپارید.
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برای این کار از تایمر استفاده نکنید#
یک ایده رایج این است که محافظت را در بازههای زمانی، مثلاً هر ثانیه، دوباره اعمال کنید و وقتی صفحه دیگر درخواست نمیکند اجازه دهید منقضی شود. این کار جواب نمیدهد و دانستن دلیلش مهم است: وقتی کاربر دکمههای اسکرینشات را میزند، اندروید از اپلیکیشن شما سؤال نمیکند. پرچم باید از قبل روی پنجره فعال باشد. هر ثانیهای که صفحه شما مشغول است، در پسزمینه کند شده یا بین دو تیک تایمر قرار دارد، ثانیهای است که اسکرینشات موفق میشود.
وقتی محتوای حساس ظاهر میشود، یک بار درخواست کنید. AppMint وقتی کاربر صفحه را ترک کند، محافظت را برمیدارد.