使用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
相关产品推荐
相关产品推荐

