Flutter中能否实现向含指定号码的新建WhatsApp群组发消息?
实现WhatsApp创建包含两个联系人的新群组
可行,但需要针对Android和iOS平台分别处理,且目标号码必须是用户设备上已保存的联系人(这是WhatsApp的官方限制,无法直接添加未保存的号码到新群组)。
以下是修改后的Flutter代码实现:
import 'package:url_launcher/url_launcher.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:easyloading/easyloading.dart'; createWhatsAppGroup() async { // 目标联系人号码(需已保存到设备通讯录) var contact1 = "+972528990525"; var contact2 = "+972123456789"; Uri launchUri; if (kIsWeb) { // Web平台暂不支持直接创建群组,可提示用户手动操作 EasyLoading.showError('Web平台暂不支持此功能'); return; } if (defaultTargetPlatform == TargetPlatform.iOS) { // iOS平台:使用wa.me的群组创建链接,需将号码转为不带+的格式 String formattedContact1 = contact1.replaceAll('+', ''); String formattedContact2 = contact2.replaceAll('+', ''); launchUri = Uri.parse("https://wa.me/?text=Hi%2C%20let's%20chat&group=0&users=$formattedContact1,$formattedContact2"); } else { // Android平台:使用WhatsApp的jid参数,格式为[号码]@s.whatsapp.net,多个用逗号分隔 String jid1 = "${contact1.replaceAll('+', '')}@s.whatsapp.net"; String jid2 = "${contact2.replaceAll('+', '')}@s.whatsapp.net"; launchUri = Uri.parse("whatsapp://chat?jid=$jid1,$jid2&text=Hi%2C%20let's%20chat"); } try { await launchUrl( launchUri, mode: LaunchMode.externalApplication, ); } on Exception { EasyLoading.showError('WhatsApp未安装或版本不支持'); } }
注意事项:
- 所有目标号码必须是用户设备通讯录中已保存的联系人,否则WhatsApp无法识别并添加到群组。
- iOS平台的
group=0参数表示创建新群组,users参数传入逗号分隔的不带+号的号码。 - Android平台需要将号码转为
[号码]@s.whatsapp.net的格式,多个jid用逗号分隔。 - 文本内容需要做URL编码(示例中用
%2C代替逗号,%20代替空格),避免解析错误。
内容的提问来源于stack exchange,提问作者RJB
相关产品推荐
相关产品推荐

