【发布时间】:2021-05-05 20:53:26
【问题描述】:
被困了一段时间,希望我能找到可以提供帮助的人
尝试使用 API 发送本地通知
API 调用返回的 JSON 如下所示,如果其中一个结果的状态文本为“已完成”,则无法获取要发送的通知
{"error":"none","data":[{"status_text":"Completed","status_id":"6","name":"Billy Noyes","order_id":"TYI-28650","type":"blood"},{"status_id":"0","order_id":"TYI-28651-1","name":"Billy Noyes","status_text":"Awaiting Sample","type":"hair"}]}
const simplePeriodicTask = "simplePeriodicTask";
// flutter local notification setup
void showNotification(v, flp) async {
var android = AndroidNotificationDetails(
'channel id', 'channel NAME', 'CHANNEL DESCRIPTION');
var iOS = IOSNotificationDetails();
var platform = NotificationDetails(android: android, iOS: iOS);
await flp.show(0, 'Virtual intelligent solution', '$v', platform,
payload: 'VIS \n $v');
}
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
FlutterLocalNotificationsPlugin flp = FlutterLocalNotificationsPlugin();
var android = AndroidInitializationSettings('ic_launcher');
var iOS = IOSInitializationSettings();
var initSetttings = InitializationSettings(android: android, iOS: iOS);
flp.initialize(initSetttings);
var response = await http.post(
'https://www.testyourintolerance.com/wp-json/app/v1/tracker?token=' +
loginDataJson["token"]);
print(response);
var data = json.decode(response.body);
for (var i = 0; data["data"].length; i++) {
if (data["data"][i]["status_text"] == 'Completed') {
showNotification('One of your results is ready to be viewed!', flp);
}
}
return Future.value(true);
});
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// Both below should be await
Workmanager.initialize(callbackDispatcher, isInDebugMode: false);
Workmanager.registerPeriodicTask("1", simplePeriodicTask,
existingWorkPolicy: ExistingWorkPolicy.replace,
frequency: Duration(minutes: 15),
initialDelay: Duration(seconds: 5),
constraints: Constraints(
networkType: NetworkType.connected,
));
runApp(
child: MyApp(),
});
}
【问题讨论】:
标签: json api flutter dart notifications