Skip to content

Commit da8e9a4

Browse files
committed
fix: ios tests
1 parent 0d09c0e commit da8e9a4

5 files changed

Lines changed: 27 additions & 11 deletions

File tree

example/integration_test/workmanager_integration_test.dart

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ import 'package:shared_preferences/shared_preferences.dart';
77
import 'package:uuid/uuid.dart';
88
import 'package:workmanager/workmanager.dart';
99

10-
const String dataTransferTaskName = 'dataTransferTask';
11-
const String retryTaskName = 'retryTask';
10+
const String dataTransferTaskName =
11+
'dev.fluttercommunity.integrationTest.dataTransferTask';
12+
const String retryTaskName = 'dev.fluttercommunity.integrationTest.retryTask';
1213

1314
/// One retry is enough to test the retry logic
1415
const int kMaxRetryAttempts = 1;
1516

1617
@pragma('vm:entry-point')
1718
void callbackDispatcher() {
1819
Workmanager().executeTask((task, inputData) async {
20+
print(
21+
'CallbackDispatcher called with task: $task and inputData: $inputData');
22+
1923
if (task == retryTaskName) {
2024
SharedPreferences prefs = await SharedPreferences.getInstance();
2125
await prefs.reload();
@@ -91,7 +95,7 @@ void main() {
9195
};
9296

9397
await workmanager.registerOneOffTask(
94-
'test.inputData',
98+
dataTransferTaskName,
9599
dataTransferTaskName,
96100
inputData: testData,
97101
);
@@ -112,7 +116,7 @@ void main() {
112116
fail('Input data was not transferred correctly to native side.');
113117
});
114118

115-
testWidgets('retry task should retry up to 3 times',
119+
testWidgets('retry task should retry up to ${kMaxRetryAttempts} times',
116120
(WidgetTester tester) async {
117121
await workmanager.initialize(callbackDispatcher);
118122

@@ -125,15 +129,15 @@ void main() {
125129

126130
try {
127131
await workmanager.registerOneOffTask(
128-
'test.retry',
132+
retryTaskName,
129133
retryTaskName,
130134
inputData: {'counter_name': counterName},
131135
backoffPolicy: BackoffPolicy.linear,
132136
backoffPolicyDelay: const Duration(seconds: 1),
133137
);
134138

135139
// Wait for the task to complete
136-
for (int i = 0; i < 100; i++) {
140+
for (int i = 0; i < 45; i++) {
137141
await Future.delayed(const Duration(seconds: 1));
138142
await prefs.reload();
139143
if (prefs.getInt(counterName) == kMaxRetryAttempts) {
@@ -144,7 +148,7 @@ void main() {
144148
} catch (e) {
145149
fail('Retry task failed with exception: $e');
146150
} finally {
147-
await workmanager.cancelByUniqueName('test.retry');
151+
await workmanager.cancelByUniqueName(retryTaskName);
148152
}
149153
});
150154
testWidgets('registerOneOffTask basic should succeed',

example/ios/Runner/AppDelegate.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import workmanager_ios
2525
WorkmanagerPlugin.registerBGProcessingTask(withIdentifier: "dev.fluttercommunity.workmanagerExample.simpleDelayedTask")
2626
WorkmanagerPlugin.registerBGProcessingTask(withIdentifier: "dev.fluttercommunity.workmanagerExample.iOSBackgroundProcessingTask")
2727

28+
WorkmanagerPlugin.registerBGProcessingTask(withIdentifier: "dev.fluttercommunity.integrationTest.dataTransferTask")
29+
WorkmanagerPlugin.registerBGProcessingTask(withIdentifier: "dev.fluttercommunity.integrationTest.retryTask")
30+
2831
// When this task is scheduled from dart it will run with minimum 20 minute frequency. The
2932
// frequency is not guaranteed rather iOS will schedule it as per user's App usage pattern.
3033
// If frequency is not provided it will default to 15 minutes

example/ios/Runner/Info.plist

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
<string>dev.fluttercommunity.workmanagerExample.simplePeriodic1HourTask</string>
1414
<string>dev.fluttercommunity.workmanagerExample.iOSBackgroundAppRefresh</string>
1515
<string>dev.fluttercommunity.workmanagerExample.iOSBackgroundProcessingTask</string>
16+
<string>dev.fluttercommunity.integrationTest.dataTransferTask</string>
17+
<string>dev.fluttercommunity.integrationTest.retryTask</string>
1618
</array>
1719
<key>CFBundleDevelopmentRegion</key>
1820
<string>$(DEVELOPMENT_LANGUAGE)</string>
@@ -62,5 +64,11 @@
6264
<true/>
6365
<key>UIApplicationSupportsIndirectInputEvents</key>
6466
<true/>
67+
<key>NSLocalNetworkUsageDescription</key>
68+
<string>This app needs local network access for debugging and communication.</string>
69+
<key>NSBonjourServices</key>
70+
<array>
71+
<string>_dartobservatory._tcp</string>
72+
</array>
6573
</dict>
6674
</plist>

example/lib/main.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import 'dart:developer';
12
import 'dart:async';
23
import 'dart:io';
3-
import 'dart:math';
4+
import 'dart:math' show Random;
45

56
import 'package:flutter/material.dart';
67
import 'package:path_provider/path_provider.dart';
@@ -39,9 +40,9 @@ final List<String> allTasks = [
3940
// Pragma is mandatory if the App is obfuscated or using Flutter 3.1+
4041
@pragma('vm:entry-point')
4142
void callbackDispatcher() {
42-
print('callbackDispatcher called');
43+
log('callbackDispatcher called');
4344
Workmanager().executeTask((task, inputData) async {
44-
print("callbackDispatcher called with task: $task");
45+
log("callbackDispatcher called with task: $task");
4546
final prefs = await SharedPreferences.getInstance();
4647
await prefs.reload();
4748

workmanager_ios/ios/Classes/BackgroundWorker.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class BackgroundWorker {
5555
private struct BackgroundChannel {
5656
static let name = "\(SwiftWorkmanagerPlugin.identifier)/background_channel_work_manager"
5757
static let initialized = "backgroundChannelInitialized"
58-
static let onResultSendCommand = "onResultSend"
58+
static let onResultSendCommand = "backgroundChannelInitialized"
5959
}
6060

6161
/// The result is discardable due to how [BackgroundTaskOperation] works.

0 commit comments

Comments
 (0)