我想从Flutter应用程序中打开whatsapp并发送特定的文本字符串。在whatsapp中,我将选择发送给谁。
进行了一些研究之后,我想到了:
_launchWhatsapp() async {
const url = "https://wa.me/?text=Hey buddy, try this super cool new app!";
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
哪个工作还可以,但是有两个问题:
_launchWhatsapp() async {
const url = "https://wa.me/?text=Hey buddy, try this super cool new app!";
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
然后抛出无法启动$ url。
这是我看到的网页:
对于解决这些问题的任何帮助,将不胜感激。
谢谢
卡森
P.s。我正在使用Url_launcher软件包来执行此操作。
答案 0 :(得分:6)
从official Whatsapp FAQ中,您可以看到“使用通用链接是链接到WhatsApp帐户的首选方法”。
因此在您的代码中,URL字符串应为:
const url = "https://wa.me/?text=YourTextHere";
如果用户的手机中安装了Whatsapp,则此链接将直接打开它。那应该可以解决先打开网页的问题。
对于无法发送多字消息的问题,这是因为您需要将消息编码为URL。在文档中也有说明:
URL编码的文本是URL编码的预填充消息。
因此,为了在Dart中对邮件进行网址编码,您可以按以下步骤进行操作:
const url = "https://wa.me/?text=Your Message here";
var encoded = Uri.encodeFull(url);
请注意,在示例代码中,您在文本消息周围加上了一组单引号,您不应该这样做。
编辑:
Whatsapp常见问题解答中还提供了另一个选项,就是直接使用Whatsapp方案。如果您想尝试一下,可以使用以下网址:
const url = "whatsapp://send?text=Hello World!"
请注意,如果您在iOS9或更高版本中进行测试,则Apple Documentation指出:
重要
如果您的应用在iOS 9.0或更高版本上链接,则必须通过将LSApplicationQueriesSchemes密钥添加到应用的Info.plist文件中来声明传递给此方法的URL方案。无论是否安装了适当的应用程序,此方法对于未声明的方案始终返回false。要了解有关该密钥的更多信息,请参见LSApplicationQueriesSchemes。
因此,如果您使用的是自定义whatsapp方案,则需要在info.plist中添加以下键:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
</array>
答案 1 :(得分:0)
要使用wa.me
域,请确保使用此格式...
https://wa.me/123?text=Your Message here
这将发送到电话号码123
。否则,您将收到一条错误消息(请参阅?https://wa.me/?text=YourMessageHere)。或者,如果您不想包括电话号码,请尝试此...
https://api.whatsapp.com/send?text=Hello there!
请记住,wa.me
需要电话号码,而api.whatsapp.com
不需要电话号码。希望这会有所帮助!
答案 2 :(得分:0)
如果您将使用 URL Launcher,那么 whatsapp 链接将在网络浏览器上打开。所以你需要设置参数 - 不要在 safari 浏览器上打开。您可以在此 flutter tutorial 上找到完整代码。
但对于您的情况,请使用以下代码。
await launch(whatappURL, forceSafariVC: false);