gpt4 book ai didi

当应用程序被杀死时,Flutter isolate 不显示通知

转载 作者:行者123 更新时间:2023-12-04 17:33:48 30 4
gpt4 key购买 nike

当应用程序被杀死时,使用 flutter isolate 包的 Flutter isolates 不会显示通知。

尝试将 isolate 包与 dart:isolate 一起使用,但不起作用。

import 'dart:async';
import 'dart:isolate';


import 'package:flutter/material.dart';
import 'package:flutter_isolate/flutter_isolate.dart';
'package:flutter_local_notifications/flutter_local_notifications.dart';
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();

Future onSelectNotification(String payload) async {
if (payload != null) {
debugPrint('notification payload: ' + payload);
}
}

void isolated(String args) async {
Timer.periodic(new Duration(seconds: 10), (Timer t) => print('hi!'));
Timer.periodic(new Duration(seconds: 10), (Timer y) async
{
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'your channel id', 'your channel name', 'your channel description',
importance: Importance.Max,
priority: Priority.High,
ticker: 'ticker');
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0, 'plain title', 'plain body', platformChannelSpecifics,
payload: 'item x');
});

}
void main() async {

// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
// If you have skipped STEP 3 then change app_icon to @mipmap/ic_launcher

var initializationSettingsAndroid =
new AndroidInitializationSettings('appicon');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
isolated("hi");
}

上面的代码是当应用程序被杀死时系统看到的代码,因为状态类已经终止,不再存在。如果我们能让上面的代码运行,那么当应用程序在 Android 和 iOS 中被用户杀死并且状态类不再存在时,隔离仍然可以工作。

提前致谢。

罗布。

最佳答案

是的,它不能单独在 Flutter 中完成,因为 isolates 是由父进程产生的,当应用程序终止时它们会被杀死。

对于 Android 使用服务,这些服务会在应用终止后产生并持续存在。

对于 iOS,您可以运行一个后台线程,它会在最短时间后生成,但无法保证何时运行。您可以根据 Apple 的决定,以音频或基于位置的方式运行应用程序,这将允许后台线程连续运行。

关于当应用程序被杀死时,Flutter isolate 不显示通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57522143/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com