You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何通过url_launcher打开Viber及Messenger指定聊天窗口

解决Viber和Facebook Messenger唤起APP打开指定聊天窗口的问题

Viber 实现

Viber的URI格式需确保电话号码为国际标准格式(不带+号,直接前缀国家代码),同时调用launchUrl时要指定唤起外部应用的模式,避免默认打开网页。

示例代码:

var viberNumber = "1234567890"; // 替换为目标号码(国际格式,无+号)
var viberUrl = "viber://chat?number=$viberNumber";
try {
  await launchUrl(
    Uri.parse(viberUrl),
    mode: LaunchMode.externalApplication, // 强制唤起Viber APP
  );
} catch (e) {
  print('无法唤起Viber: $e');
}

Facebook Messenger 实现

直接使用m.me/username会默认打开网页,需使用Messenger专属URI协议:

  • 若已知目标用户电话号码(国际格式,不带+号),用fb-messenger://send-to
  • 若已知目标用户Facebook用户ID,用fb-messenger://user-thread

用电话号码唤起

var messengerPhone = "1234567890"; // 替换为目标号码(国际格式,无+号)
var messengerUrl = "fb-messenger://send-to?phone=$messengerPhone";
try {
  await launchUrl(
    Uri.parse(messengerUrl),
    mode: LaunchMode.externalApplication, // 强制唤起Messenger APP
  );
} catch (e) {
  print('无法唤起Messenger: $e');
}

用用户ID唤起

var messengerUserId = "123456789"; // 替换为目标用户的Facebook ID
var messengerUrl = "fb-messenger://user-thread/$messengerUserId";
try {
  await launchUrl(
    Uri.parse(messengerUrl),
    mode: LaunchMode.externalApplication,
  );
} catch (e) {
  print('无法唤起Messenger: $e');
}

关键注意事项

  • 设备需已安装对应APP,否则会抛出异常
  • 电话号码必须为国际标准格式(移除所有特殊字符,仅保留数字,开头为国家代码)
  • LaunchMode.externalApplication是核心配置:它会告诉系统优先唤起对应APP,而非在浏览器中打开链接

内容的提问来源于stack exchange,提问作者Salar Azad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:55:20