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

如何实现通过WhatsApp分享群组号并拉起自研App?(安卓、iOS)

解决方案:通过自定义URL Scheme实现跨App拉起并传递群组号

可以实现需求,核心是利用WhatsApp自动识别文本中URL格式内容的特性,通过自定义URL Scheme封装群组号,用户点击链接后即可触发系统拉起你的自研App并携带参数。以下是Android和iOS平台的具体实现步骤:


Android平台实现

  1. 配置自定义URL Scheme
    在AndroidManifest.xml中,给负责处理群组加入的Activity添加intent-filter,声明支持自定义Scheme:
<activity android:name=".GroupJoinActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- 自定义Scheme,建议用App独有的标识作为前缀,比如"yourapp" -->
        <data android:scheme="yourapp" />
    </intent-filter>
</activity>
  1. 生成分享文本
    将群组号封装为自定义URL格式,示例:
点击加入群组:yourapp://join?group_id=123456

WhatsApp会自动识别yourapp://join?group_id=123456为可点击链接。
3. 接收并解析参数
在GroupJoinActivity中获取传递的群组号:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    intent.data?.let { uri ->
        val groupId = uri.getQueryParameter("group_id")
        // 这里编写自动加入群组的业务逻辑
    }
}

iOS平台实现

  1. 配置自定义URL Scheme
    在Xcode项目的Info标签页,展开URL Types,添加新的URL Type:
  • Identifier:填写你的App Bundle ID
  • URL Schemes:填入自定义Scheme,比如yourapp
  1. 生成分享文本
    使用和Android一致的URL格式即可:
点击加入群组:yourapp://join?group_id=123456

WhatsApp会识别该链接并允许用户点击跳转。
3. 接收并解析参数
根据iOS版本,在AppDelegate或SceneDelegate中处理URL跳转:

// iOS 13及以下(AppDelegate)
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    guard url.scheme == "yourapp" else { return false }
    let groupId = url.queryParameters?["group_id"]
    // 处理自动加入群组的逻辑
    return true
}

// iOS 13+(SceneDelegate)
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url, url.scheme == "yourapp" else { return }
    let groupId = url.queryParameters?["group_id"]
    // 处理自动加入群组的逻辑
}

辅助解析参数的扩展:

extension URL {
    var queryParameters: [String: String]? {
        guard let components = URLComponents(url: self, resolvingAgainstBaseURL: true),
              let queryItems = components.queryItems else { return nil }
        return queryItems.reduce(into: [:]) { result, item in
            result[item.name] = item.value
        }
    }
}

关键注意事项

  • 自定义URL Scheme需避免与其他App冲突,建议结合App的Bundle ID作为前缀,比如com.yourcompany.yourapp://join?group_id=xxx。
  • 确保分享的URL格式标准,必须以scheme://开头,不能包含多余空格或特殊字符,否则WhatsApp可能无法识别为可点击链接。
  • 如果需要更安全的跳转方式(避免Scheme冲突),iOS可配置Universal Links、Android可配置App Links,但自定义URL Scheme是纯文本场景下最直接的实现方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:06:19