كيف تتخلص من مشاكل التخزين عند حذف التطبيق؟ الحل النهائي على Android وiOS لمطوري Flutter

الحل النهائي لمشاكل التخزين: كيف تبدأ تطبيقك من الصفر بعد الحذف على Android وiOS

الحل النهائي لمشاكل التخزين: كيف تبدأ تطبيقك من الصفر بعد الحذف على Android وiOS

عند تطوير التطبيقات باستخدام Flutter، قد تواجه مشكلة شائعة جدًا: عند حذف التطبيق من الهاتف وإعادة تثبيته، تجد أن بعض البيانات ما زالت موجودة! هذا الأمر قد يُسبب مشاكل كبيرة في بعض أنواع التطبيقات مثل:

  • - التطبيقات المالية أو البنكية
  • - التطبيقات التي تعتمد على حساب مستخدم واحد
  • - التطبيقات التي تحتوي على بيانات حساسة


في هذا المقال، سنشرح لك لطريقة الصحيحة للتخلص من جميع البيانات المخزنة بعد حذف التطبيق، سواء على نظام Android أو iOS، مع ضمان عدم استرجاع أي بيانات محفوظة سابقًا من النسخ الاحتياطي (Backup).


تعطيل النسخ الاحتياطي في Android

نظام Android يسمح لك بسهولة بمنع النسخ الاحتياطي لبيانات التطبيق من خلال ملف `AndroidManifest.xml`.


🔧 الخطوات:

افتح ملف `AndroidManifest.xml` وأضف السطرين التاليين داخل وسم `<application>`:


android:allowBackup="false"

android:fullBackupContent="false"


بهذه الطريقة، تمنع Android من أخذ نسخة احتياطية من بيانات التطبيق على Google Drive أو أي خدمة أخرى. وبالتالي، عند حذف التطبيق وإعادة تثبيته، سيبدأ التطبيق من جديد بدون أي بيانات قديمة.


مسح التخزين الآمن في iOS عند أول تشغيل

نظام iOS يحتفظ بالبيانات في iCloud، مما يعني أن حذف التطبيق لا يمحو بالضرورة كل البيانات المخزنة. لذلك، نحتاج إلى كود يقوم بمسح التخزين عند أول تشغيل للتطبيق.


 أضف الكود التالي داخل ملف `main.dart` أو في الصفحة التي تُفتح أولًا بعد التشغيل:

try {
const String key = "isFirstRun";
final SharedPreferences prefs = await SharedPreferences.getInstance();
const storage = FlutterSecureStorage();
final bool isFirstRun = prefs.getBool(key) ?? true;

if (isFirstRun) {
await storage.deleteAll();
prefs.clear();
await prefs.setBool(key, false);
}
} catch (e) {
Logger().e("Error clearing secure storage: $e");
}
- يتم التحقق من ما إذا كانت هذه أول مرة يتم فيها تشغيل التطبيق.
- إذا كانت كذلك، يتم مسح جميع البيانات من `FlutterSecureStorage` و `SharedPreferences`.
- بعد ذلك، يتم حفظ قيمة توضح أن التطبيق تم تشغيله من قبل، حتى لا يتم تنفيذ العملية مرة أخرى.

منع ملفات Hive من النسخ الاحتياطي على iOS

إذا كنت تستخدم Hive لتخزين البيانات، فانتبه لأن ملفات Hive تُخزن داخل مجلد `Documents` في iOS، وهذا المجلد يتم نسخه تلقائيًا إلى iCloud.

منع نسخ ملفات Hive إلى iCloud

if (Platform.isIOS) {
final dir = await getApplicationDocumentsDirectory();
final hiveDir = Directory(dir.path);

if (await hiveDir.exists()) {
try {
await Process.run('xattr', [
'-w',
'com.apple.MobileBackup',
'1',
hiveDir.path,
]);
} catch (e) {
Logger().e("Error setting xattr for iOS: $e");
}
}
}

هذا الكود يُخبر نظام iOS بعدم نسخ مجلد Hive إلى iCloud. وبالتالي، إذا تم حذف التطبيق، ستُحذف جميع البيانات معه نهائيًا.
تعليقات