我正在尝试设置ios配置为文档https://github.com/fluttercommunity/flutter_workmanager/blob/main/IOS_SETUP.md这设置有什么问题我有这个错误:
Unhandled Exception: PlatformException(bgTaskSchedulingFailed(Error
Domain=BGTaskSchedulerErrorDomain Code=3 "(null)") error, Scheduling the task using
BGTaskScheduler has failed.
This may be due to too many tasks being scheduled but not run.
See the error details: Error Domain=BGTaskSchedulerErrorDomain Code=3 "(null)"., null, null)
#0 StandardMethodCodec.decodeEnvelope
(package:flutter/src/services/message_codecs.dart:647:7)
#1 MethodChannel._invokeMethod
(package:flutter/src/services/platform_channel.dart:294:18)
<asynchronous suspension>
#2 Workmanager.registerOneOffTask (package:workmanager/src/workmanager.dart:187:7)
这是我在main中的代码//本地通知函数如何无效callbackDispatcher()async { final now = DateTime.now(); Workmanager().executeTask((task,inputData)async { prefs = await SharedPreferences.getInstance();如果(首选获取字符串(“随机时间”)!= null){最终检出时间=日期时间.解析(首选获取字符串(“随机时间”)!); if(checkouttime.isBefore(现在)){通知应用程序显示通知(正文:“人力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力物力”,标题:“我的应用”,id:1、有效载荷:“有效载荷”,);} }返回未来值(true);); }
void main() async {
WidgetsFlutterBinding.ensureInitialized();
NotificationApi.init();
await GetStorage.init();
final now = DateTime.now();
prefs = await SharedPreferences.getInstance();
//initialize workmanager
await Workmanager().initialize(callbackDispatcher, isInDebugMode: false);
//start workmanager
await Workmanager().registerOneOffTask(
"1",
"simpleTask",
);
}
所以我正在尝试显示一个本地通知,如果时间的东西来了
它在Android上运行良好
这是我设置的ios文件
在信息列表中
<key>UIBackgroundModes</key>
<array>
<string>processing</string>
</array>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>simpleTask</string>
</array>
这是AppDelegate.swift
import UIKit
import Flutter
import workmanager
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
WorkmanagerPlugin.registerTask(withIdentifier: "simpleTask")
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
这是项目.pbxproj
// !$*UTF8*$!
{
SystemCapabilities = {
com.apple.BackgroundModes = {
enabled = 1;
};
};
...
1条答案
按热度按时间5f0d552i1#
dart函数中
registerOneOffTask()
的第一个参数必须与swift中的withIdentifier
相同,因此在您的情况下,您需要更改:收件人:
注1:您需要使用带有bundle名称的string,而不是
simpleTask
,因此请将其更改为如下形式:com.example.project_name.simpleTask
注2:Workmanager插件当前在IOS设备上工作时存在问题,您可以在396、402、403中看到许多未决问题。