
- بواسطة x32x01 ||
مع انتشار التطبيقات واستخدامها بشكل شبه يومي، أحيانًا بيكون عندنا معلومات حساسة لازم نحميها. سواء كانت بيانات شخصية، محتوى مملوك لشركتك، أو معلومات تحتاج للخصوصية، مهم جدًا كمطور تحميها من أي تسريب.
من بين الطرق المهمة للحماية: منع المستخدم من أخذ Screenshot أو تسجيل الشاشة
ليه لازم تمنع Screenshots؟
1. استخدام Package جاهز: flutter_windowmanager
أولًا، ضيف الباكج في ملف
بعدها في دالة main أضف الكود ده:
الطريقة دي سهلة جدًا ومباشرة وتشتغل على Android بكل بساطة.
2. الطريقة اليدوية على Android
في ملف
ده هيفرض حماية على الشاشة ويمنع أي محاولة لأخذ Screenshot أو تسجيل الشاشة على Android.
3. الطريقة اليدوية على iOS
في ملف AppDelegate.swift أضف الكود التالي:
ده هيمنع أي Screen Recording أو Screenshot على iOS بشكل مباشر.
الخلاصة
من بين الطرق المهمة للحماية: منع المستخدم من أخذ Screenshot أو تسجيل الشاشة

ليه لازم تمنع Screenshots؟
- حماية الخصوصية: تمنع مشاركة المعلومات الشخصية أو الحساسة مع أي طرف غير مصرح له.
- الامتثال للقوانين: تحمي البيانات وفق المعايير والإجراءات المطلوبة.
- حماية الملكية الفكرية: تمنع نسخ أو نشر المحتوى المملوك لشركتك.
طريقة منع Screen Shot في Flutter
في Flutter ممكن تعمل ده بطرق متعددة، سواء باستخدام باكج جاهزة أو كتابة الكود مباشرة لكل منصة:1. استخدام Package جاهز: flutter_windowmanager
أولًا، ضيف الباكج في ملف pubspec.yaml
: Code:
dependencies:
flutter_windowmanager: ^0.2.0
بعدها في دالة main أضف الكود ده:
Code:
WidgetsFlutterBinding.ensureInitialized();
// implemented using window manager
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
runApp(MyApp());
2. الطريقة اليدوية على Android
في ملف MainActivity.kt
أضف الكود التالي: Code:
import android.os.Bundle
import android.view.WindowManager
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Prevent screenshot and screen recording
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
}
}
3. الطريقة اليدوية على iOS
في ملف AppDelegate.swift أضف الكود التالي: Code:
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
// Prevent screenshots
if let window = self.window {
window.isSecure = true
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
الخلاصة
- حماية التطبيقات من تسريب المعلومات الحساسة خطوة مهمة جدًا.
- في Flutter عندك خيارات سهلة سواء بالـ Package أو كتابة كود مخصص لكل منصة.
- دائمًا اختبر التطبيق على الأجهزة المختلفة للتأكد إن الحماية شغالة كويس.
التعديل الأخير: