README.md 3,0 КБ
Newer Older
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
1
2
# workmanager_aurora

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
3
The Aurora implementation of the [workmanager](https://pub.dev/packages/workmanager).
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
4

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
5
## Features
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
6

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
7
8
9
10
11
- registerOneOffTask
- registerPeriodicTask
- cancelByUniqueName
- cancelByTag
- cancelAll
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
12

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
13
## Limitations
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
14

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
15
16
17
18
19
20
1. Dart entry point for handling tasks should be called `callbackDispatcher`.
2. One-off tasks do not try to restart on error (no backoff support).
3. The constraints are set in the application's desktop file, not through the dart code.
4. Initial delay in periodic tasks is not supported.
5. Periodic tasks are started immediately upon registration.
7. Minimum frequency of periodic tasks is 15 minutes.
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
21

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
22
## Usage
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
23

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
24
25
This package is not an _endorsed_ implementation of `workmanager`.
Therefore, you have to include `workmanager_aurora` alongside `workmanager` as dependencies in your `pubspec.yaml` file.
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
26

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
27
**pubspec.yaml**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
28

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
29
30
31
32
33
34
35
36
```yaml
dependencies:
  workmanager: ^0.5.2
  workmanager_aurora:
    git:
      url: https://gitlab.com/omprussia/flutter/flutter-community-plugins/workmanager_aurora.git
      ref: aurora-0.0.1
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
37

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
38
**CMakeLists.txt**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
39

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
40
41
42
43
```
find_package(Qt5 COMPONENTS Core REQUIRED)
target_link_libraries(${BINARY_NAME} PRIVATE Qt5::Core)
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
44

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
45
***main.cpp**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
46

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
47
48
49
```desktop
#include <flutter/application.h>
#include <flutter/flutter_compatibility_qt.h> // <- Enable Qt
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
50

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
51
#include "generated_plugin_registrant.h"
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
52

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
53
54
55
56
57
58
59
60
int main(int argc, char *argv[]) {
    aurora::Initialize(argc, argv);
    aurora::EnableQtCompatibility(); // <- Enable Qt
    aurora::RegisterPlugins();
    aurora::Launch();
    return 0;
}
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
61

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
62
***.desktop**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
63

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
64
In Aurora OS, background tasks need to be declared in a desktop file.
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
65

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
66
The mandatory field is `Type`, where you should specify `worker` for one-of tasks and `periodic` for periodic tasks.
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
67

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
68
You can also optionally specify the permissions that your background task needs through an enumeration in the `Permissions` field.
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
69

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
70
71
72
73
```desktop
[X-Task <ONE_OF_TASK_NAME>]
Type=worker
Permissions=
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
74

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
75
76
77
78
[X-Task <PERIODIC_TASK_NAME>]
Type=periodic
Permissions=Location
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
79

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
80
You can also optionally specify the conditions of the background task. For example, if your background task requires the Internet, you can specify the following in the `Conditions` field:
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
81

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
82
83
84
85
86
87
```desktop
[X-Task <PERIODIC_TASK_WITH_INTERNET_NAME>]
Type=periodic
Permissions=Internet
Conditions=internet
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
88

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
89
***.spec**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
90

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
91
92
93
94
95
```spec
BuildRequires: pkgconfig(appdir-cpp)
BuildRequires: pkgconfig(runtime-manager-qt5)
BuildRequires: pkgconfig(nemonotifications-qt5)
```
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
96

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
97
***.dart**
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
98

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
99
100
```dart
import 'package:workmanager/workmanager.dart';
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
101

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
102
103
104
105
106
107
108
109
110
111
@pragma('vm:entry-point')
void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) {
    switch (task) {
      case "SimpleTask":
        print("Background task started: $task");
        break;
      default:
        return Future.value(false);
    }
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
112

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
113
114
115
    return Future.value(true);
  });
}
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
116

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
117
118
void main() {
  WidgetsFlutterBinding.ensureInitialized();
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
119

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
120
121
  Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
  Workmanager().registerOneOffTask("unique-task-id", "SimpleTask");
Красавин Никита Сергеевич's avatar
Красавин Никита Сергеевич включено в состав коммита
122

Denis Glazkov's avatar
Denis Glazkov включено в состав коммита
123
124
125
  runApp(MyApp());
}
```