Mik*_*bil 7 ios dart flutter flutter-workmanager
我正在尝试将 ios 配置设置为文档\n https://github.com/fluttercommunity/flutter_workmanager/blob/main/IOS_SETUP.md \n此设置有什么问题\n 有此错误:
\nUnhandled Exception: PlatformException(bgTaskSchedulingFailed(Error \nDomain=BGTaskSchedulerErrorDomain Code=3 "(null)") error, Scheduling the task using \nBGTaskScheduler has failed.\n\nThis may be due to too many tasks being scheduled but not run.\n\nSee the error details: Error Domain=BGTaskSchedulerErrorDomain Code=3 "(null)"., null, null)\n#0      StandardMethodCodec.decodeEnvelope \n(package:flutter/src/services/message_codecs.dart:647:7)\n#1      MethodChannel._invokeMethod \n(package:flutter/src/services/platform_channel.dart:294:18)\n<asynchronous suspension>\n#2      Workmanager.registerOneOffTask (package:workmanager/src/workmanager.dart:187:7)\n这是我的代码\n main\n//本地通知函数如何\nvoid callbackDispatcher() async {\nfinal now = DateTime.now();\nWorkmanager().executeTask((task, inputData) async {\nprefs =等待 SharedPreferences.getInstance();\nif (prefs.getString(\'randomTime\') != null) {\nfinal checkouttime = DateTime.parse(prefs.getString(\'randomTime\')!);\nif (checkouttime .isBefore(now)) {\nNotificationApi.showNotification(\nbody: "\xd9\x85\xd9\x86 \xd9\x81\xd8\xb6\xd9\x84\xd9\x83 \xd9\x82\xd9\x85 \xd8 \xa8\xd8\xaa\xd8\xa7\xd9\x83\xd9\x8a\xd8\xaf \xd8\xaa\xd8\xb3\xd8\xac\xd9\x8a\xd9\x84\xd9\x83",\n标题: "我的应用",\nid: 1,\npayload: "payload",\n);\n}\n}\nreturn Future.value(true);\n});\n}
\n void main() async {\n   WidgetsFlutterBinding.ensureInitialized();\n   NotificationApi.init();\n   await GetStorage.init();\n   final now = DateTime.now();\n   prefs = await SharedPreferences.getInstance();\n   //initialize workmanager\n   await Workmanager().initialize(callbackDispatcher, isInDebugMode: false);\n   //start workmanager\n   await Workmanager().registerOneOffTask(\n           "1",\n           "simpleTask",\n     );\n  }\n所以我试图在有事情发生时显示本地通知
\n它在 Android 上运行良好
\n这是我对 ios 文件的设置
\n在信息.plist中
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0<key>UIBackgroundModes</key>\n       <array>\n       <string>processing</string>\n       </array>\n       <key>BGTaskSchedulerPermittedIdentifiers</key>\n       <array>\n       <string>simpleTask</string>\n       </array>\n这是 AppDelegate.swift
\nimport UIKit\nimport Flutter\nimport workmanager\n@UIApplicationMain\n@objc class AppDelegate: FlutterAppDelegate {\n \xc2\xa0\xc2\xa0override func application( \n   _ application: UIApplication,\n   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n   ) -> Bool {\n     GeneratedPluginRegistrant.register(with: self) \n     WorkmanagerPlugin.registerTask(withIdentifier: "simpleTask")\n     return super.application(application, didFinishLaunchingWithOptions: launchOptions)\n   }\n  }\n这是project.pbxproj
\n// !$*UTF8*$!\n{\n   SystemCapabilities = {\n     com.apple.BackgroundModes = {\n     enabled = 1;\n     };\n   };\n   ...\ndart 函数中的第一个参数registerOneOffTask()必须与 swift 中的相同withIdentifier  ,因此在您的情况下您需要更改:
 await Workmanager().registerOneOffTask(
           "1",
           "simpleTask",
     );
到:
 await Workmanager().registerOneOffTask(
           "simpleTask", // <<<< change this
           "simpleTask",
     );
注意1:您需要使用带有捆绑包名称的字符串而不是
simpleTask,因此将其更改为类似以下内容:com.example.project_name.simpleTask
注 2:Workmanager 插件当前在 IOS 设备上工作存在问题,您可以在此处看到许多未解决的问题396、402、403。
| 归档时间: | 
 | 
| 查看次数: | 2693 次 | 
| 最近记录: |