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

如何在OneSignal中为应用用户注册/订阅对应分类主题?

OneSignal多分类主题订阅实现方案

OneSignal没有提供和Firebase Messaging.messaging().subscribe(toTopic:) 完全同名的接口,对应的主题订阅功能可以通过其自带的标签(Tags)系统实现,具体方案如下:

核心逻辑

你可以为每个分类主题定义专属标记,用标签存储用户的订阅列表,后续推送时通过标签筛选即可定向触达订阅了对应分类的用户。

端侧实现代码示例

iOS端

// 批量订阅多个主题
func subscribeToTopics(topicList: [String]) {
    // 直接将订阅列表作为标签值上传
    OneSignal.sendTags(["subscribed_topics": topicList]) { success in
        if success {
            print("已成功订阅主题:\(topicList)")
        }
    }
}

// 调用示例:订阅天气、体育、科技三个分类
subscribeToTopics(topicList: ["weather", "sports", "technology"])

安卓端

// 批量订阅多个主题
fun subscribeToTopics(topicList: List<String>) {
    OneSignal.sendTags(mapOf("subscribed_topics" to topicList)) { success ->
        if (success) {
            Log.d("OneSignal", "主题订阅成功")
        }
    }
}

// 调用示例
subscribeToTopics(listOf("weather", "sports", "technology"))

取消订阅实现

如果用户需要取消单个主题的订阅,读取现有标签值移除对应分类后重新上传即可:

// iOS端取消订阅示例
func unsubscribeFromTopic(topicName: String) {
    OneSignal.getTags { tags in
        guard var currentTopics = tags?["subscribed_topics"] as? [String] else { return }
        currentTopics.removeAll { $0 == topicName }
        OneSignal.sendTag("subscribed_topics", value: currentTopics)
    }
}

定向推送操作

在OneSignal后台创建推送任务时,在「受众」筛选栏选择subscribed_topics标签,设置匹配对应主题名称即可;如果通过服务端API推送,在请求参数中添加对应的标签筛选规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:02