如何在 FCM 通知中创建主题

How To Create Topic in FCM Notifications

我正在尝试 Firebase-Notification API 当我从控制台向应用程序发送下游消息时,该服务运行良好,但如何向主题注册用户发送消息?

我在 android 边做了

FirebaseMessaging.getInstance().subscribeToTopic("TopicName");

但是当我尝试将下游消息从控制台发送到主题时它说

This project does not have any topics

编辑: 我发现在映射主题后最多需要 1 天时间才能显示在 Firebase 控制台中

首先,鉴于IID_TOKEN是您的注册令牌,TOPIC_NAME是您要创建的主题,您需要通过制作POST来创建主题 请求

https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME

要检查您创建的主题,请在此 URL

上发出 GET 请求
 https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?details=true

并在您的请求中插入您的 API_KEY HEADERS

Authorization: key=YOUR_API_KEY

您的主题最多需要 1 天 才能显示在 Firebase 控制台中,因此为了进行测试,您可以发出 curl 请求或使用像 Advanced REST client[=16= 这样的软件]

这是备用路径。

如果您为客户端应用订阅了一个不存在的主题,那么该主题也将被创建,而无需调用任何 firebase url 请求。

它还需要几个小时才能显示在 Firebase 控制台上。

通过使用 google 共享示例:https://github.com/firebase/quickstart-android/tree/master/messaging 您可以确认相同。

        FirebaseMessaging.getInstance().subscribeToTopic("news");
        Log.d(TAG, "Subscribed to news topic");

Firebase 需要时间在控制台中创建新主题。就我而言,新主题是在 4 小时后创建的。

您可以使用 http 创建主题 api:

https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME

1. IID_TOKEN = 设备注册令牌,您可以在 android 设备上使用以下命令找到它:

String IID_TOKEN = FirebaseInstanceId.getInstance().getToken();

2.TOPIC_NAME = 新建主题名称

3.Authorization:键=YOUR_API_KEY。在 header 中设置此参数。看截图: Creating new topic via Advanced rest client

YOUR_API_KEY: console.firebase.google.com

并发送请求,您将收到 http 状态 "OK"。

然后您可以通过以下 api 获取有关您当前项目中所有主题的信息:

https://iid.googleapis.com/iid/info/IID_TOKEN?details=true

此处需要将授权密钥添加到请求的 header,您将收到您的主题列表:response info topics

I recommend read this article about Instance ID/Server by Google