diff --git a/example/android/.gitignore b/example/android/.gitignore index 6f568019..39de1306 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -11,3 +11,5 @@ GeneratedPluginRegistrant.java key.properties **/*.keystore **/*.jks + +app/.cxx/* diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 6c76adc8..669db462 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -36,7 +36,7 @@ android { defaultConfig { applicationId "dev.fluttercommunity.workmanager.example" compileSdk 34 - minSdkVersion 19 + minSdkVersion flutter.minSdkVersion targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 064431d8..97a0a5ed 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip \ No newline at end of file diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 009192ec..0a03d7eb 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.1.4" apply false + id "com.android.application" version '8.8.1' apply false id "org.jetbrains.kotlin.android" version "1.9.23" apply false } diff --git a/example/lib/main.dart b/example/lib/main.dart index 80021afa..ffd185df 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -14,14 +14,10 @@ const simpleTaskKey = "be.tramckrijte.workmanagerExample.simpleTask"; const rescheduledTaskKey = "be.tramckrijte.workmanagerExample.rescheduledTask"; const failedTaskKey = "be.tramckrijte.workmanagerExample.failedTask"; const simpleDelayedTask = "be.tramckrijte.workmanagerExample.simpleDelayedTask"; -const simplePeriodicTask = - "be.tramckrijte.workmanagerExample.simplePeriodicTask"; -const simplePeriodic1HourTask = - "be.tramckrijte.workmanagerExample.simplePeriodic1HourTask"; -const iOSBackgroundAppRefresh = - "be.tramckrijte.workmanagerExample.iOSBackgroundAppRefresh"; -const iOSBackgroundProcessingTask = - "be.tramckrijte.workmanagerExample.iOSBackgroundProcessingTask"; +const simplePeriodicTask = "be.tramckrijte.workmanagerExample.simplePeriodicTask"; +const simplePeriodic1HourTask = "be.tramckrijte.workmanagerExample.simplePeriodic1HourTask"; +const iOSBackgroundAppRefresh = "be.tramckrijte.workmanagerExample.iOSBackgroundAppRefresh"; +const iOSBackgroundProcessingTask = "be.tramckrijte.workmanagerExample.iOSBackgroundProcessingTask"; final List allTasks = [ simpleTaskKey, @@ -224,7 +220,6 @@ class _MyAppState extends State { Workmanager().registerPeriodicTask( simplePeriodic1HourTask, simplePeriodic1HourTask, - flexInterval: Duration(minutes: 15), frequency: Duration(hours: 1), ); } @@ -263,7 +258,7 @@ class _MyAppState extends State { _showNotInitialized(); return; } - await Workmanager().registerProcessingTask( + await Workmanager().registerOneOffTask( iOSBackgroundProcessingTask, iOSBackgroundProcessingTask, initialDelay: Duration(seconds: 20), @@ -276,11 +271,10 @@ class _MyAppState extends State { child: Text("isscheduled (Android)"), onPressed: Platform.isAndroid ? () async { - final workInfo = - await Workmanager().isScheduledByUniqueName( - simplePeriodicTask, - ); - print('isscheduled = $workInfo'); + // final workInfo = await Workmanager().isScheduledByUniqueName( + // simplePeriodicTask, + // ); + // print('isscheduled = $workInfo'); } : null), SizedBox(height: 8), @@ -327,7 +321,7 @@ class _MyAppState extends State { } if (Platform.isIOS) { - Workmanager().printScheduledTasks(); + // Workmanager().printScheduledTasks(); } setState(() {}); diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e8f43730..59c2ad17 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -6,12 +6,13 @@ environment: sdk: ">=2.18.0 <4.0.0" dependencies: - path_provider: + path_provider: shared_preferences: permission_handler: flutter: sdk: flutter - workmanager: + workmanager: + path: ../workmanager dev_dependencies: integration_test: diff --git a/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt b/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt index 08367891..6eff4830 100644 --- a/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt +++ b/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/BackgroundWorker.kt @@ -1,5 +1,8 @@ package dev.fluttercommunity.workmanager +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding import android.content.Context import android.os.Handler import android.os.Looper diff --git a/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkmanagerPlugin.kt b/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkmanagerPlugin.kt index e81b07dc..df5a563a 100644 --- a/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkmanagerPlugin.kt +++ b/workmanager/android/src/main/kotlin/dev/fluttercommunity/workmanager/WorkmanagerPlugin.kt @@ -3,9 +3,12 @@ package dev.fluttercommunity.workmanager import android.content.Context import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.plugin.common.BinaryMessenger +import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel +import io.flutter.plugin.common.MethodChannel.MethodCallHandler +import io.flutter.plugin.common.MethodChannel.Result -class WorkmanagerPlugin : FlutterPlugin { +class WorkmanagerPlugin : FlutterPlugin, MethodCallHandler { private var methodChannel: MethodChannel? = null private var workmanagerCallHandler: WorkmanagerCallHandler? = null @@ -19,7 +22,11 @@ class WorkmanagerPlugin : FlutterPlugin { ) { workmanagerCallHandler = WorkmanagerCallHandler(context) methodChannel = MethodChannel(messenger, "be.tramckrijte.workmanager/foreground_channel_work_manager") - methodChannel?.setMethodCallHandler(workmanagerCallHandler) + methodChannel?.setMethodCallHandler(this) + } + + override fun onMethodCall(call: MethodCall, result: Result) { + workmanagerCallHandler?.onMethodCall(call, result) } override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { @@ -31,4 +38,4 @@ class WorkmanagerPlugin : FlutterPlugin { methodChannel = null workmanagerCallHandler = null } -} +} \ No newline at end of file diff --git a/workmanager/pubspec.yaml b/workmanager/pubspec.yaml index 8fbc2298..6b14a85a 100644 --- a/workmanager/pubspec.yaml +++ b/workmanager/pubspec.yaml @@ -1,6 +1,6 @@ name: workmanager description: Flutter Workmanager. This plugin allows you to schedule background work on Android and iOS. -version: 0.5.2 +version: 0.5.3 homepage: https://github.com/fluttercommunity/flutter_workmanager repository: https://github.com/fluttercommunity/flutter_workmanager issue_tracker: https://github.com/fluttercommunity/flutter_workmanager/issues