Flutter能否向Line Notify或Line Bot发送消息?
实现方案总览
整个流程分为2个可选路径:走Line Notify 或者 走Line Messaging API(Line Bot),两种方案都是在Flutter侧触发HTTP请求调用Line的开放接口完成消息推送。
方案1:使用Line Notify实现(更简单,适合单方向推送消息)
Line Notify是官方提供的轻量化推送工具,不需要复杂的Bot配置,只需要申请令牌即可调用。
前置准备
- 申请Line Notify的个人令牌,选择要推送的目标会话(个人/群组),保存生成的令牌值
Flutter侧实现步骤
- 先在
pubspec.yaml中添加网络请求依赖:
dependencies: flutter: sdk: flutter http: ^1.1.0 # 替换为当前最新稳定版即可
- 封装发送消息的方法:
import 'dart:convert'; import 'package:http/http.dart' as http; Future<void> sendLineNotifyMessage(String message, String token) async { final url = Uri.parse('https://notify-api.line.me/api/notify'); final response = await http.post( url, headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Bearer $token', }, body: { 'message': message, }, ); if (response.statusCode == 200) { // 此处写推送成功的后续逻辑 } else { // 此处写推送失败的后续逻辑,可打印response.body排查错误 } }
- 给按钮绑定点击事件:
ElevatedButton( onPressed: () { // 替换为自己的Line Notify令牌,生产环境不要硬编码到代码中 const lineToken = '你的Line Notify令牌'; sendLineNotifyMessage('这是Flutter应用发送的测试消息', lineToken); }, child: const Text('发送消息到Line'), )
注意:生产环境不要把令牌硬编码在客户端代码里,建议走自己的后端服务转发请求,避免令牌泄露被滥用。
如果要推送到群组,需要先把Line Notify官方账号加入对应群组。
方案2:使用Line Bot(Line Messaging API)实现(适合双向交互场景)
如果需要后续实现机器人回复、用户主动触发交互等功能,用Line Bot方案更合适。
前置准备
- 在Line Developer控制台创建Provider和Messaging API通道,获取通道访问令牌(Channel Access Token)
- 添加目标用户为Line Bot的好友,或者把Bot加入到目标群组
- 获取目标用户/群组的ID(userId/groupId)
Flutter侧实现步骤
- 同样需要先添加
http依赖,和方案1一致 - 封装发送消息的方法:
Future<void> sendLineBotMessage(String message, String channelToken, String targetId) async { final url = Uri.parse('https://api.line.me/v2/bot/message/push'); final response = await http.post( url, headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer $channelToken', }, body: jsonEncode({ 'to': targetId, 'messages': [ { 'type': 'text', 'text': message, } ] }), ); if (response.statusCode == 200) { // 推送成功逻辑 } else { // 推送失败逻辑,可打印返回值排查错误 } }
- 按钮绑定事件逻辑和方案1类似,替换为调用
sendLineBotMessage方法即可,传入对应的通道令牌和目标ID。
常见问题排查
- 推送失败先检查令牌、ID是否正确,对应权限有没有开启
- Line Bot如果推送到群组,需要在开发者控制台开启群组权限,且Bot已经加入对应群组
- 客户端请求如果出现跨域问题,需要走自己的后端服务做一层请求转发
内容的提问来源于stack exchange,提问作者Narawit Pokaew
相关产品推荐
相关产品推荐

