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

iOS平台Flutter应用能否设置始终允许跳转WhatsApp无需确认?

解决iOS上Flutter唤起WhatsApp时的确认弹窗问题

你当前通过应用内浏览器中转跳转的方式,会触发iOS系统的安全确认提示——这是因为网页发起的外部App跳转被系统默认限制。要跳过确认弹窗直接唤起WhatsApp,可通过以下方式优化:

核心方案:直接使用WhatsApp Scheme跳转,跳过浏览器中转

利用WhatsApp官方支持的URL Scheme,通过url_launcher直接唤起App,无需经过网页中转。关键是指定LaunchMode.externalNonBrowserApplication模式,让系统直接处理App跳转请求。

代码实现

import 'package:url_launcher/url_launcher.dart';

Future<void> openWhatsAppContact(String phoneNumber) async {
  // 注意:电话号码必须带国际区号前缀,例如+8613800138000
  final whatsappUri = Uri.parse('whatsapp://send?phone=$phoneNumber');
  
  if (await canLaunchUrl(whatsappUri)) {
    // 使用externalNonBrowserApplication模式直接唤起外部App
    await launchUrl(
      whatsappUri,
      mode: LaunchMode.externalNonBrowserApplication,
    );
  } else {
    // 处理WhatsApp未安装的场景,可提示用户安装或打开网页版
    print('WhatsApp未安装');
  }
}

iOS配置要求

在iOS项目的Info.plist中添加Scheme白名单,否则canLaunchUrl会返回false:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>whatsapp</string>
</array>

关键说明

  • 电话号码格式必须规范:必须包含国际区号(如+86),否则WhatsApp无法定位到目标联系人。
  • 弹窗原因解析:应用内浏览器属于网页环境,网页发起的App跳转被iOS系统视为潜在风险,因此强制弹出确认;而直接通过Scheme由App发起跳转,属于合法的App间唤起逻辑,系统不会触发确认提示。

内容的提问来源于stack exchange,提问作者Mr. Oak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:55:20