كيفية منع Screen Shot في Flutter للأندرويد و iOS

x32x01
  • بواسطة x32x01 ||
مع انتشار التطبيقات واستخدامها بشكل شبه يومي، أحيانًا بيكون عندنا معلومات حساسة لازم نحميها. سواء كانت بيانات شخصية، محتوى مملوك لشركتك، أو معلومات تحتاج للخصوصية، مهم جدًا كمطور تحميها من أي تسريب.

من بين الطرق المهمة للحماية: منع المستخدم من أخذ 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());
الطريقة دي سهلة جدًا ومباشرة وتشتغل على Android بكل بساطة.



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)
    }
}
ده هيفرض حماية على الشاشة ويمنع أي محاولة لأخذ Screenshot أو تسجيل الشاشة على Android.



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)
    }
}
ده هيمنع أي Screen Recording أو Screenshot على iOS بشكل مباشر.

الخلاصة ✅

  • حماية التطبيقات من تسريب المعلومات الحساسة خطوة مهمة جدًا.
  • في Flutter عندك خيارات سهلة سواء بالـ Package أو كتابة كود مخصص لكل منصة.
  • دائمًا اختبر التطبيق على الأجهزة المختلفة للتأكد إن الحماية شغالة كويس.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
846
x32x01
x32x01
x32x01
الردود
0
المشاهدات
163
x32x01
x32x01
x32x01
الردود
0
المشاهدات
428
x32x01
x32x01
x32x01
الردود
0
المشاهدات
348
x32x01
x32x01
x32x01
الردود
0
المشاهدات
762
x32x01
x32x01
x32x01
الردود
0
المشاهدات
317
x32x01
x32x01
x32x01
الردود
0
المشاهدات
350
x32x01
x32x01
x32x01
الردود
0
المشاهدات
412
x32x01
x32x01
x32x01
الردود
0
المشاهدات
401
x32x01
x32x01
x32x01
الردود
0
المشاهدات
643
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,830
المشاركات
2,027
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى