【问题标题】:Need help using Flutter Local Notifications and Workmanager to send notifications using API在使用 Flutter Local Notifications 和 Workmanager 使用 API 发送通知时需要帮助
【发布时间】: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


    【解决方案1】:

    我认为您的 for 循环需要 i &lt; data["data"].length。您应该在循环上放置一个断点,以查看它是否正在运行 ShowNotification。此外,您的AndroidInitializationSettings 可能需要接收@mipmap/ic_launcher

    for (var i = 0; i < data["data"].length; i++) {
      if (data["data"][i]["status_text"] == 'Completed') {
        showNotification('One of your results is ready to be viewed!', flp);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多