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

iOS端FirebaseMessaging:如何获取消息发送所用的主题?

iOS Firebase Messaging 获取推送主题名称的可行方案

方案1:发送推送时自定义字段携带主题名

在发送主题推送的payload里,手动在data字段添加主题标识,示例如下:

{
  "to": "/topics/your_topic_name",
  "data": {
    "topic": "your_topic_name",
    // 其他业务自定义数据
  },
  "notification": {
    "title": "推送标题",
    "body": "推送内容"
  }
}

接收消息时,直接从userInfo["topic"]中取出主题名称即可。

方案2:使用Firebase Messaging专属回调方法

从Firebase Messaging 10.0+版本开始,iOS提供了MessagingDelegate的messaging(_:didReceiveRemoteMessage:)回调,该方法接收的MessagingRemoteMessage对象包含from属性,和Android的getFrom()逻辑一致,能直接拿到格式为/topics/your_topic_name的主题地址,示例代码:

func messaging(_ messaging: Messaging, didReceiveRemoteMessage remoteMessage: MessagingRemoteMessage) {
    if let from = remoteMessage.from, from.hasPrefix("/topics/") {
        let topicName = from.replacingOccurrences(of: "/topics/", with: "")
        // 处理获取到的主题名称
    }
}

注意需要先设置Messaging.messaging().delegate = self,且确保Firebase Messaging版本满足要求。

补充说明:旧的application(_:didReceiveRemoteNotification:fetchCompletionHandler:)属于UIKit层面的通用推送回调,本身不包含FCM主题相关的元数据;而Firebase提供的专属回调是针对FCM消息设计的,能获取更完整的消息上下文信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:41:55