如何使用 UrlLauncher 从我的 Flutter 应用程序直接向 WhatsApp 发送消息?
Posted
技术标签:
【中文标题】如何使用 UrlLauncher 从我的 Flutter 应用程序直接向 WhatsApp 发送消息?【英文标题】:How to send a message directly from my Flutter app to WhatsApp using UrlLauncher? 【发布时间】:2019-09-17 10:28:52 【问题描述】:我正在构建一个必须能够接受订单并将其发送到特定 WhatsApp 号码的应用程序。我到底应该怎么做?我可以打开 WhatsApp,但我不知道打开时如何发送消息。
title: new Text("WhatsApp"),
trailing: new Icon(Icons.message),
onTap: () async
int phone = 962770593839;
var whatsappUrl = "whatsapp://send?phone=$phone";
await UrlLauncher.canLaunch(whatsappUrl) != null
? UrlLauncher.launch(whatsappUrl)
: print(
"open WhatsApp app link or do a snackbar with
notification that there is no WhatsApp installed");
,
我希望当我输入一个 TextField 并按下发送时,保存的字符串将能够在启动 WhatsApp 后发送到 WhatsApp 号码。
【问题讨论】:
应用程序的工作方式并非如此。您可以启动共享意图,以便支持它的应用程序可以使用它,也可以启动您在此处使用的深层链接 URL。深层链接是应用程序随附的手机的本地 API,它完全取决于 WhatsApp,取决于他们如何实现它。有关如何使用深层链接的更多信息,请查看 WhatsApp 文档。 在颤振中,我们没有像 android 那样的 Intent。我可以轻松地将消息从我的应用程序发送到 Android 中的 WhatsApp。为什么我可以在这里做。?我可以启动whatsapp,但不能发送任何东西。 太棒了!你知道在Android怎么做,写你自己的plugin,就可以和你在Android做的一样。 【参考方案1】:使用插件。
url_launcher
使用以下链接:https://api.whatsapp.com/send?phone=XXXXXXXXXXX(在 X 的位置输入您要联系的人的电话号码,包括国家代码,但不带 + 号。)
RaisedButton( onPressed: () async => await launch( "https://wa.me/$number?text=Hello"),, child: Text('Open Whatsapp'), ),
或者
您可以使用这个其他插件。
whatsapp_unilink
whatsapp_unilink 包可帮助您构建 HTTP 链接并为您提供惯用的 Dart 接口:
import 'package:whatsapp_unilink/whatsapp_unilink.dart'; import 'package:url_launcher/url_launcher.dart'; launchWhatsApp() async final link = WhatsAppUnilink( phoneNumber: '+001-(555)1234567', text: "Hey! I'm inquiring about the apartment listing", ); await launch('$link');
【讨论】:
这会填满字段,但不会按发送键。有没有办法自动化整个过程,包括按下发送键 不按发送键是什么意思? launchWhatsApp() 是一个函数。 意思是最终创建了一个URI,当你launch
它时,Whatsapp窗口被打开,并且消息文本被预先填充,但它无法在没有用户按下的情况下自动发送消息窗口中的发送按钮
我现在明白你的意思了,WhatsApp 用户隐私政策不允许在未经用户同意的情况下发送消息。【参考方案2】:
试试flutter_open_whatsapp插件。你直接发消息给号码
FlutterOpenWhatsapp.sendSingleMessage("918179015345", "Hello");
链接 Open in WhatsApp
【讨论】:
对于任何想使用这个包的人,我建议不要使用它。它维护得很差,作者没有回应用户在 GitHub 上提出的问题。无论如何我尝试使用它,并得到一个 java 整数转换错误。 我也在用这个【参考方案3】:你可以这样做。
onPressed: () async
for (var msg in msgList)
if (msg["phone"] != null)
var url = "$baseURL91$msg['phone']&text=$msg['messages']";
print(url);
AndroidIntent intent = AndroidIntent(
action: 'action_view',
data: Uri.encodeFull(url),
package: "com.whatsapp.w4b");
intent.launch();
,
child: Icon(Icons.send),
),
【讨论】:
【参考方案4】:使用whatsapp_share包
这会启动带有相应编号的 WhatsApp 并预填充文本字段。
文本和链接 Future<void> share() async
await WhatsappShare.share(
text: 'Whatsapp share text',
linkUrl: 'https://flutter.dev/',
phone: '911234567890',
);
分享图片、文件
_image.path 是你要分享给whatsapp的文件路径
Future<void> shareFile() async
await WhatsappShare.shareFile(
text: 'Whatsapp share text',
phone: '911234567890',
filePath: "$_image.path",
);
完整示例here
【讨论】:
以上是关于如何使用 UrlLauncher 从我的 Flutter 应用程序直接向 WhatsApp 发送消息?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OpenCV 从我的磁盘播放视频文件。? [关闭]
如何使用 @WithMockUser 并从我的属性文件中传递我的用户名和密码?