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

如何为iMessage扩展自定义消息启用回复与转发功能?

问题描述

在iMessage扩展中使用以下代码插入自定义图片消息后,接收端点击该消息时,回复、转发等功能处于禁用状态,无法正常使用:

class MessageUtil {
    static func insertImageIntoConversation(_ image: UIImage, conversation: MSConversation) {
        // Create an MSMessage with the UIImage
        let layout = MSMessageTemplateLayout()
        layout.image = image
        let message = MSMessage()
        message.layout = layout
        
        // Insert the message into the conversation
        conversation.insert(message, completionHandler: { error in
            if let error = error {
                print("Failed to insert message: \(error.localizedDescription)")
            } else {
                print("Message inserted successfully")
            }
        })
    }
}
解决方案

要启用自定义消息的回复与转发功能,核心是让iMessage系统识别该消息为可交互消息,关键操作如下:

  • 为MSMessage设置有效的url属性:iMessage依赖这个属性标记消息具备交互能力,可使用自定义URL Scheme(比如your-app-scheme://message/image),哪怕是占位的有效URL也可以。示例修改:

    let message = MSMessage()
    message.layout = layout
    // 添加URL属性,启用交互功能
    message.url = URL(string: "your-app-scheme://custom-image-message")
    
  • 可选:设置消息的accessibilityLabel,提升无障碍体验的同时,帮助系统更好识别消息类型:

    message.accessibilityLabel = "自定义图片消息"
    

修改后的完整代码:

class MessageUtil {
    static func insertImageIntoConversation(_ image: UIImage, conversation: MSConversation) {
        let layout = MSMessageTemplateLayout()
        layout.image = image
        
        let message = MSMessage()
        message.layout = layout
        // 必须设置url来启用回复/转发
        message.url = URL(string: "your-app-scheme://custom-image-message")
        // 可选:无障碍标签
        message.accessibilityLabel = "自定义图片消息"
        
        conversation.insert(message, completionHandler: { error in
            if let error = error {
                print("Failed to insert message: \(error.localizedDescription)")
            } else {
                print("Message inserted successfully")
            }
        })
    }
}

原理说明:当MSMessage未设置url时,系统会将其判定为静态内容,默认禁用回复、转发等交互功能。添加有效url后,系统会识别该消息为可交互的自定义消息,自动启用相关操作选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:44:54