在Flutter中如何通过号码列表创建并打开WhatsApp广播组?
Flutter实现WhatsApp广播组创建与打开
核心思路
WhatsApp官方没有提供直接创建广播组的Deep Link,但可以通过唤起多收件人消息发送界面,发送消息后手动保存为广播组。以下是具体实现步骤:
1. 添加依赖
需要用到url_launcher包唤起外部应用,在pubspec.yaml中添加依赖:
dependencies: url_launcher: ^6.2.5 # 可替换为最新版本
2. 号码格式处理
WhatsApp要求号码为无符号的国际格式(如中国号码以86开头),先统一处理号码格式:
// 清理并格式化号码为WhatsApp兼容格式 String formatPhoneNumber(String number) { // 移除所有非数字字符 final cleanedNumber = number.replaceAll(RegExp(r'\D'), ''); // 根据你的地区修改国家码,示例为中国地区(86) if (!cleanedNumber.startsWith('86')) { return '86$cleanedNumber'; } return cleanedNumber; }
3. 实现唤起方法
编写方法生成WhatsApp链接并打开:
import 'package:url_launcher/url_launcher.dart'; Future<void> openWhatsAppBroadcast(List<String> recipients, String message) async { // 格式化所有收件人号码 final formattedNumbers = recipients.map(formatPhoneNumber).toList(); // 构建多号码参数 final phoneParams = formattedNumbers.map((num) => 'phone=$num').join('&'); // 编码消息内容避免特殊字符错误 final encodedMessage = Uri.encodeComponent(message); final whatsappUrl = 'whatsapp://send?$phoneParams&text=$encodedMessage'; final uri = Uri.parse(whatsappUrl); if (await canLaunchUrl(uri)) { await launchUrl(uri, mode: LaunchMode.externalApplication); } else { // 可替换为自定义错误提示逻辑 throw '无法打开WhatsApp,请确认已安装应用'; } }
4. Android端额外配置
为让应用能识别WhatsApp,在android/app/src/main/AndroidManifest.xml中添加查询配置:
<queries> <package android:name="com.whatsapp" /> <package android:name="com.whatsapp.w4b" /> <!-- 适配WhatsApp Business --> </queries>
使用示例
直接调用方法即可:
List<String> recipients = ['0185889898', '0125555555','012552335555']; String message = 'Hello this is a broadcast message'; await openWhatsAppBroadcast(recipients, message);
注意事项
- 必须确保号码是完整的国际格式,否则WhatsApp无法识别对应联系人。
- 唤起后会进入多收件人消息发送界面,发送消息后可通过右上角菜单选择「保存为广播组」完成创建。
- 需处理用户未安装WhatsApp的异常情况,建议添加友好提示。
内容的提问来源于stack exchange,提问作者Fady Youssef
相关产品推荐
相关产品推荐

