71

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

我在android端做了

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

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

This project does not have any topics

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

4

4 回答 4

63

这是一条替代路径。

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

它也需要几个小时才能出现在 Firebase 控制台上。

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

        FirebaseMessaging.getInstance().subscribeToTopic("news");
        Log.d(TAG, "Subscribed to news topic");
于 2016-05-24T20:07:59.130 回答
58

首先,鉴于这 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

Authorization: key=YOUR_API_KEY

您的主题最多需要1 天时间才能显示在 Firebase 控制台中,因此您可以发出 curl 请求或使用高级 REST 客户端等软件进行测试

于 2016-05-22T15:13:13.147 回答
23

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

于 2016-07-29T07:54:02.157 回答
23

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

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

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

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

2.TOPIC_NAME = 新的主题名称

3.授权:key=YOUR_API_KEY。在标头中设置此参数。查看屏幕截图: 通过高级休息客户端创建新主题

YOUR_API_KEY: console.firebase.google.com

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

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

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

这里需要将授权密钥添加到请求的标题中,您将收到您的主题列表:响应信息主题

我推荐阅读 Google 的这篇关于 Instance ID/Server 的文章

于 2016-09-13T12:37:42.677 回答