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

使用UIActivityViewController分享MP3到WhatsApp时文字未显示,如何解决?

解决UIActivityViewController分享MP3到WhatsApp时文本不显示的问题

WhatsApp在处理UIActivityViewController的activityItems时,默认会优先加载媒体文件并忽略后续的文本内容,导致仅发送音频文件。要同时发送文本和音频,需要通过自定义UIActivityItemProvider来针对WhatsApp调整分享内容:

步骤1:自定义文本内容提供者

创建一个继承自UIActivityItemProvider的子类,重写item属性,仅在分享到WhatsApp时返回指定文本:

class TextActivityItemProvider: UIActivityItemProvider {
    override var item: Any {
        // 判断当前分享目标是否为WhatsApp
        if let activityType = activityType, 
           activityType == UIActivity.ActivityType(rawValue: "net.whatsapp.WhatsApp.ShareExtension") {
            return "some message"
        }
        return super.item
    }
}

步骤2:重构分享代码

用自定义的提供者替代原有的字符串,确保文本优先被WhatsApp识别:

// 初始化文本提供者,占位符可随意设置
let textProvider = TextActivityItemProvider(placeholderItem: "")
// 按「文本提供者、媒体URL」的顺序组装分享项
let itemsToShare: [Any] = [textProvider, mediaURL]

let activityViewController = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil)
activityViewController.excludedActivityTypes = [
    .addToReadingList,
    .assignToContact,
]

self.rootViewController?.present(activityViewController, animated: true, completion: nil)

补充说明

  • 必须保证文本提供者在分享数组的第一位,WhatsApp会优先读取数组前序的文本内容,再加载后续的媒体文件
  • net.whatsapp.WhatsApp.ShareExtension是WhatsApp官方的分享扩展标识,该值长期稳定无需担心变更

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:05:06