【问题标题】:Firebase Cloud Messaging Cannot parse topic nameFirebase 云消息传递无法解析主题名称
【发布时间】:2017-03-28 00:51:50
【问题描述】:

我正在尝试在我的 iOS 应用中订阅一个主题,但不断收到错误消息:

<FIRMessaging/WARNING> Cannot parse topic name /topics/pets/cnlLksAxmdYPkDjEftDwZjFwvDw2_coffee. Will not subscribe.

我要订阅的代码是这样的:

FIRMessaging.messaging().subscribe(toTopic: "/topics/pets/\(name)")

name 是您在错误中看到的主题的最后一部分。

有人知道我做错了什么吗?我已经确认 Firebase 消息可以正确接收通知。

【问题讨论】:

    标签: ios firebase firebase-cloud-messaging


    【解决方案1】:

    / 字符不是主题名称的允许字符

    允许的字符是:

    • a-z
    • A-Z
    • 0-9
    • -, _, ., ~, %

    我可以通过在 Android 中使用主题名称为 pets/123asd 和显示的日志进行测试来确认这些是唯一允许的字符:

    Invalid topic name: Pets/123asd does not match the allowed format [a-zA-Z0-9-_.~%]{1,900}
    

    对于 iOS,前缀 /topics/ 是必需的,并且仍然有效。无效字符仅适用于您在前缀后包含的主题名称

    【讨论】:

    • 奇怪的是 Firebase 给出了一个示例主题 /topics/news in their example 和他们的日志消息,当你只使用像 news 这样的普通主题名称时,他们会给出一个控制台错误:&lt;FIRMessaging/WARNING&gt; WARNING. Topic name news should be prefixed with /topics/ as /topics/news
    • @NSTJ 有趣。我在文档中没有注意到这一点。我会试着环顾四周,看看我能找到什么。不过我的猜测是,news 可能是一个预定义的主题。不知道这是否可能。检查后会更新我的答案。
    • 啊哈-@AL。我实际上并没有使用news,我使用了我自己的主题名称(它是一个任意整数),但使用news 作为一个常见的奇怪的例子:) 旁注 - 我的问题最终证明是它需要以 小时 的顺序创建新主题并显示在控制台上,以防有人遇到类似情况
    • @NSTJ 所以我做了一些挖掘,我的答案仍然正确。 iOS 中的订阅格式确实需要在主题名称前加上/topics/。但是,主题名称本身不应包含任何无效字符。对。主题通常需要几个小时或最多一天才能显示在 Firebase 通知控制台中。 :)
    • 一切顺利!也许更新您的答案以反映 topic nameprefix 到主题名称(即:topic/)之间的区别,因为我从您的回答中了解到您可以'两者中都没有/(不要减损你的答案 - 它帮助了我!?干杯)
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2021-02-28
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多