25-7-26-1

This commit is contained in:
Hamza-Ayed
2025-07-26 10:30:10 +03:00
parent 83fa8c776c
commit 3742d5b417
645 changed files with 134317 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
import UIKit
import Flutter
import FirebaseCore
import GoogleMaps
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// --- 1. تهيئة خرائط جوجل ---
// يتأكد من وجود ملف Config.plist ويقرأ المفتاح منه
if let config = loadConfig(), let apiKey = config["APIKey"] as? String {
GMSServices.provideAPIKey(apiKey)
}
// --- 2. تهيئة Firebase ---
FirebaseApp.configure()
// --- 3. فحص الأمان قبل تشغيل الواجهة الرئيسية ---
// ملاحظة: هذا يعتمد على وجود ملفات SecurityChecks في مشروعك
if SecurityChecks.isDeviceCompromised() {
showSecurityAlert()
return false // يمنع إكمال تشغيل التطبيق
}
// --- 4. إعداد قناة الاتصال مع فلاتر ---
setupMethodChannel()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
// --- دالة إعداد قناة الاتصال مع تعديل الاسم ---
func setupMethodChannel() {
guard let controller = window?.rootViewController as? FlutterViewController else {
return
}
// !! تعديل مهم جداً: تم تغيير اسم القناة ليتوافق مع اسم تطبيقك الجديد
let channel = FlutterMethodChannel(name: "com.Intaleq.intaleq/security",
binaryMessenger: controller.binaryMessenger)
channel.setMethodCallHandler { call, result in
switch call.method {
case "isNativeRooted":
// يتم إرجاع نتيجة فحص الأمان مباشرة
result(SecurityChecks.isDeviceCompromised())
default:
result(FlutterMethodNotImplemented)
}
}
}
// --- كل الدوال المساعدة من الكود القديم تم نسخها كما هي ---
func showSecurityAlert() {
guard let rootVC = UIApplication.shared.keyWindow?.rootViewController else {
exit(0)
}
let alert = UIAlertController(
title: "Security Warning".localized,
message: "Compromised device detected. Exiting.".localized,
preferredStyle: .alert
)
alert.addAction(UIAlertAction(title: "OK".localized, style: .destructive) { _ in
self.obfuscatedExit()
})
// لمنع إغلاق التنبيه
if #available(iOS 15.0, *) {
alert.presentationController?.delegate = self
}
rootVC.present(alert, animated: true, completion: nil)
}
func obfuscatedExit() {
let selector = NSSelectorFromString(String(format: "%@%@", "ex", "it:"))
if responds(to: selector) {
perform(selector, with: 0)
}
}
func loadConfig() -> [String: Any]? {
guard let path = Bundle.main.path(forResource: "Config", ofType: "plist"),
let config = NSDictionary(contentsOfFile: path) as? [String: Any] else {
fatalError("Couldn't find Config.plist file. Please add it to your project.")
}
return config
}
}
// --- الامتدادات (Extensions) من الكود القديم ---
// لمنع إغلاق نافذة التنبيه
extension AppDelegate: UIAdaptivePresentationControllerDelegate {
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
return false
}
func presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController) {
// لا تفعل شيئاً عند محاولة الإغلاق
}
}
// لسهولة الترجمة
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
}