如何在FCM通知中创建主题


70

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

我在android方面做了

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

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

This project does not have any topics

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


4
嘿,穆罕默德。如果最后修改是解决问题的方法,您可以将其发布为答案吗?在Stack Overflow中,自我回答完全没问题,这将使其他人更容易找到解决方案(显然要有耐心:-))。
Frank van Puffelen '16

做..对不起,我认为它违反了Stackoveflow政策,用
单独的


现在可以在Firebase中在几分钟内找到新主题了:)
Menuka Ishan

Answers:


62

这是一条替代路径。

如果您为客户端应用订阅了不存在的主题,则无需调用任何Firebase URL请求即可创建主题。

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

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

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

1
感谢您指出预期的延迟-我以为可能是客户问题,但我怀疑那是我遇到的问题。干杯。
NSTJ

如果两天后仍然没有出现主题该怎么办?
Nik

@jped再经过3天和100次尝试并更新到4.x分支后,它终于出现了。我实际上认为更新解决了我的问题。
Nik

news还是/topics/news
appiconhero.co

57

首先,鉴于这 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请求或使用高级REST客户端等软件


7
什么是注册令牌?
xinbenlv

9
fyi:这与subscribeToTopic()从设备呼叫完全相同。逻辑总是相同的:当设备订阅主题或服务器发送主题时,就会创建主题。
弗兰克·范·普菲伦

多数民众赞成在太长的距离
Jemshit Iskenderov

没有人知道如何不使用批处理(https://iid.googleapis.com/iid/v1:batchRemove)退订主题吗?
Lea


22

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


1
这实际上并没有添加任何内容。问题中的OP已经提供了订阅主题的功能。另一个没有,但不是他要的。请考虑编辑您的答案以使其与问题相对应。谢谢!
法比奥说莫妮卡(Reonica Monica)

2
这回答了我的问题。我期望它能立即ping通。
PGMacDesign '16

21

您可以使用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.授权:key = YOUR_API_KEY。在标题中设置此参数。看截图: 通过Advanced rest client创建新主题

YOUR_API_KEY: console.firebase.google.com

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

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

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

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

我建议阅读有关Google的实例ID /服务器的本文

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.