refactor: إعادة تسمية التطبيقات الأربعة siro_* → intaleq_*
المجلدات وأسماء حزم dart واستيراداتها: siro_rider → intaleq_rider siro_driver → intaleq_driver siro_admin → intaleq_admin siro_service → intaleq_service شمل ذلك `name:` في كل pubspec وكل `package:siro_*` في الاستيرادات (115 ملفاً في rider وحده)، وإشارات أسماء المجلدات في docs/ وتعليق في backend/Admin/notifications/broadcast.php. لم تبقَ إشارة واحدة (تحقّقت). + ضُمّت حزم get و get_storage داخل intaleq_driver/packages/ وحُوّلت مساراتها الثلاثة من `../../Intaleq/packages/*` إلى `./packages/*`. كانت تُحل عرضاً إلى مجلد App/Intaleq القديم المجاور — تبعية خارج المستودع تنكسر بأول نقل. لم يبقَ في أي تطبيق تبعية مسار خارج الشجرة. ⚠️ لم تُمسّ بعد: هويات المتاجر (applicationId · PRODUCT_BUNDLE_IDENTIFIER · shorebird app_id) ولا الألوان ولا النصوص المرئية ولا النطاقات — كل منها كوميت منفصل، والهويات تحتاج قرار المالك. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
92dc6b3641
commit
0aab85c732
@@ -0,0 +1,110 @@
|
||||
import UIKit
|
||||
import Flutter
|
||||
import FirebaseCore
|
||||
import native_geofence
|
||||
|
||||
@main
|
||||
@objc class AppDelegate: FlutterAppDelegate {
|
||||
|
||||
override func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||
) -> Bool {
|
||||
|
||||
// --- 1. تسجيل callback الإضافات للخلفية (مطلوب لـ native_geofence) ---
|
||||
NativeGeofencePlugin.setPluginRegistrantCallback { registry in
|
||||
GeneratedPluginRegistrant.register(with: registry)
|
||||
}
|
||||
|
||||
// --- 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.siro.intaleq_rider/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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// --- الامتدادات (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: "")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user