import 'dart:io'; import 'package:fikoyt_mesaici/apps/mesaici/servisler/fikoyt.mesaici.service.dart'; import 'package:fikoyt_mesaici/routes.dart'; import 'package:fikoyt_ui/core/http_overrides.dart'; import 'package:fikoyt_ui/fikoyt_ui.dart'; import 'package:flutter/widgets.dart' hide Intent; import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:home_widget/home_widget.dart'; import 'package:receive_intent/receive_intent.dart'; import 'core/fikoyt.service.dart'; void _bildirimeTiklandi(NotificationResponse response) async { final actionId = response.actionId ?? response.payload; if (actionId == null || actionId.isEmpty) return; final intent = Intent( action: "com.fikoyt.mesaici.komut", extra: {"actionId": actionId, "komut": actionId}, ); await FikoYTService.servisMesaici.intentMetodCalistir(intent); } @pragma('vm:entry-point') void _bildirimeTiklandiArkaPlan(NotificationResponse response) async { final actionId = response.actionId ?? response.payload; if (actionId == null || actionId.isEmpty) return; final intent = Intent( action: "com.fikoyt.mesaici.komut", extra: {"actionId": actionId, "komut": actionId}, ); await FikoYTService.servisMesaici.intentMetodCalistir(intent); } @pragma('vm:entry-point') Future _widgetArkaPlanCallback(Uri? uri) async { if (uri == null) return; final komut = uri.host; if (komut.isEmpty) return; final tamKomut = 'com.fikoyt.mesaici.komut.$komut'; print('[Widget Callback] Komut: $tamKomut'); // Komutu SharedPreferences'a yaz await HomeWidget.saveWidgetData('bekleyen_komut', tamKomut); // Arka plan servisine aninda bildir final service = FlutterBackgroundService(); service.invoke("mesaici.widget.komut", {"komut": tamKomut}); } void main() async { final binding = WidgetsFlutterBinding.ensureInitialized(); FlutterNativeSplash.preserve(widgetsBinding: binding); HttpOverrides.global = HttpSSlIptalUzerineYaz(); HomeWidget.setAppGroupId('com.fikoyt.mesaici'); await HomeWidget.registerInteractivityCallback(_widgetArkaPlanCallback); FikoYTMesaiciService? mesaiciServis; // ignore: unused_local_variable await FikoYTCoreService.init( settings: FikoYTServiceSettings( appSettings: FikoYTAppSettings( routes: routes, title: "FikoYT Mesaici", firstRouteUrl: "/splash", ), notificationSettings: FikoYTNotificationSettings( channels: const [ AndroidNotificationChannel( "Genel", "Genel", description: "Cihazınızda Mesaiciye veya FikoYT'a Ait Genel Bildirimler", ), AndroidNotificationChannel( "IseBaslamaBildirimleri", "İşe Başlama Bildirimleri", description: "İş Saatiniz Geldiğinde Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ), AndroidNotificationChannel( "IsBitirmeBildirimleri", "İş Bitirme Bildirimleri", description: "İş Saatiniz Bittiğinde Eğer Karta Hala Çıkış Yapılmamışsa Bildirimler Aracılığıyla Çıkış Yapmanızı Sağlar.", ), AndroidNotificationChannel( "MolaBaslangicBildirimleri", "Mola Başlangıç Bildirimleri", description: "Mola Saatiniz Başladığında Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ), AndroidNotificationChannel( "MolaBitisBildirimleri", "Mola Bitiş Bildirimleri", description: "Mola Saatiniz Bittiğinde Eğer Karta Hala Giriş Yapılmamışsa Bildirimler Aracılığıyla Giriş Yapmanızı Sağlar.", ), AndroidNotificationChannel( "KonumGirisBildirimleri", "Konum Giriş Bildirimleri", description: "İşyerine girdiğinizde konum takibi ile otomatik veya yarı otomatik giriş bildirimleri.", importance: Importance.high, ), AndroidNotificationChannel( "KonumCikisBildirimleri", "Konum Çıkış Bildirimleri", description: "İşyerinden çıktığınızda konum takibi ile otomatik veya yarı otomatik çıkış bildirimleri.", importance: Importance.high, ), AndroidNotificationChannel( "ArkaPlanBildirimi", "Arka Plan Bildirimi", description: "Arka Planda Çalışıp Çalışmadığını Görebilmeniz İçin Bildirim Kanalı", ) ], onDidReceiveNotificationResponse: _bildirimeTiklandi, onDidReceiveBackNotificationResponse: _bildirimeTiklandiArkaPlan, ), onInitialIntent: (intent) async => await mesaiciServis?.intentMetodCalistir(intent), ), ); mesaiciServis = FikoYTService.servisMesaici; await FikoYTCoreService.initializeNotifications(); await FikoYTService().init(); // await Workmanager().initialize(WorkManagerTaskFunc, // The top level function, aka callbackDispatcher // isInDebugMode: false // If enabled it will post a notification whenever the task is running. Handy for debugging tasks // ); // await initializeNotification(mesaiciServis); // if (Platform.isWindows == false) { // try { // final receivedIntent = await ReceiveIntent.getInitialIntent(); // // mesaiciServis.aktifIntent.value = receivedIntent; // await mesaiciServis.intentMetodCalistir(receivedIntent); // // Validate receivedIntent and warn the user, if it is not correct, // // but keep in mind it could be `null` or "empty"(`receivedIntent.isNull`). // } on PlatformException { // // Handle exception // } // } FlutterNativeSplash.remove(); FikoYTCoreService.uygulamaCalistir(); }