在flutter_background_service内部使用时共享偏好给予"Unable to establish connection on channel."



我正在使用flatter_background_service启动一个从Cloud获取数据的服务。它在安卓系统中运行良好。但当我在iOS模拟器上运行时,我会出现上面提到的错误。

void syncData() async {
WidgetsFlutterBinding.ensureInitialized();
Fimber.plantTree(DebugTree());
Fimber.d("SyncData() called");
final service = FlutterBackgroundService();
Fimber.d("Sync Service Started: $service");
ApiRepo apiRepo = ApiRepo();
bool isPatientUploaded = false;
Fimber.d("isPatientUploaded: $isPatientUploaded");
if(Platform.isAndroid) {
SharedPreferencesAndroid.registerWith();
PathProviderAndroid.registerWith();
FlutterBackgroundServiceAndroid.registerWith();
} else if (Platform.isIOS) {
SharedPreferencesIOS.registerWith();
PathProviderIOS.registerWith();
FlutterBackgroundServiceIOS.registerWith();
}
Fimber.d("Fetching Shared Preference");
SharedPreferences prefs = await SharedPreferences.getInstance();
Fimber.d("Fetched Shared Preference: $prefs");
String? authToken = prefs.getString(PrefKeys.TOKEN);
...........
}

我可以看到日志,直到";获取共享偏好";然后得到一个错误。我看不到下一个日志。

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)

这就是我启动服务的方式

startSync() async {
Fimber.d("startSync() called");
final service = FlutterBackgroundService();
Fimber.i("Configuring $service");
bool? isConfigured = await service.configure(
iosConfiguration: IosConfiguration(
onForeground: syncData, onBackground: syncData, autoStart: false),
androidConfiguration: AndroidConfiguration(
onStart: syncData,
isForegroundMode: true,
autoStart: false,
foregroundServiceNotificationContent: "Uploading Data to Cloud...",
foregroundServiceNotificationTitle: "Selfi",
));
await DatabaseHelper().db;
Fimber.i("isConfigured: $isConfigured");
if (isConfigured) {
Fimber.d("Starting Service");
bool isStarted = await service.startService();
Fimber.d("Service Started: $isStarted");
}
}

我在共享偏好方面也遇到了同样的问题,重新构建应用程序解决了这个问题。

您可以停止并重新启动应用程序。。有时IDE不会立即选择安装的软件包。希望能有所帮助:(

相关内容

最新更新