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

如何在Flutter应用中打开Discord私聊及指定频道?

Flutter实现Discord跳转(服务器加入+私聊)

你可以继续使用url_launcher插件,通过构造Discord的**深度链接(Deep Link)**或网页链接来实现跳转,以下是具体实现步骤:

1. 确认依赖与权限配置

确保你已正确配置url_launcher的平台权限:

  • Android:在AndroidManifest.xml中添加Discord应用查询权限
    <queries>
      <package android:name="com.discord"/>
    </queries>
    
  • iOS:在Info.plist中添加Discord的URL Scheme白名单
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>discord</string>
    </array>
    

2. 构造跳转链接

Discord支持两种跳转方式,优先使用App深度链接,若用户未安装Discord则 fallback到网页版:

  • 跳转至服务器:使用服务器邀请码构造链接

    • App深度链接:discord://invite/[你的服务器邀请码]
    • 网页链接:https://discord.gg/[你的服务器邀请码]
      邀请码可从Discord服务器的邀请链接中提取,例如https://discord.gg/abc123中的abc123
  • 发起用户私聊:使用目标用户的数字ID构造链接

    • App深度链接:discord://users/[目标用户ID]
    • 网页链接:https://discord.com/users/[目标用户ID]
      用户ID需开启Discord开发者模式后复制:设置→高级→开发者模式,右键用户头像→复制ID

3. 实现跳转逻辑

封装工具函数处理跳转,优先打开Discord App,失败则打开网页:

import 'package:url_launcher/url_launcher.dart';

// 跳转至Discord服务器
Future<void> openDiscordServer(String inviteCode) async {
  final appUri = Uri.parse('discord://invite/$inviteCode');
  final webUri = Uri.parse('https://discord.gg/$inviteCode');

  if (await canLaunchUrl(appUri)) {
    await launchUrl(appUri);
  } else {
    await launchUrl(webUri);
  }
}

// 跳转至用户私聊界面
Future<void> openDiscordDM(String userId) async {
  final appUri = Uri.parse('discord://users/$userId');
  final webUri = Uri.parse('https://discord.com/users/$userId');

  if (await canLaunchUrl(appUri)) {
    await launchUrl(appUri);
  } else {
    await launchUrl(webUri);
  }
}

4. 调用示例

在需要跳转的地方直接调用函数即可:

// 跳转到邀请码为abc123的服务器
openDiscordServer('abc123');

// 跳转到ID为123456789的用户私聊界面
openDiscordDM('123456789');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:42:52