我开始使用新的Google服务进行通知, Firebase Cloud Messaging
.
感谢此代码https://github.com/firebase/quickstart-android/tree/master/messaging我能够将 Firebase User Console 的通知发送到我的Android设备 .
是否有任何API或方式可以在不使用Firebase控制台的情况下发送通知?我的意思是,例如,PHP API或类似的东西,直接从我自己的服务器创建通知 .
我开始使用新的Google服务进行通知, Firebase Cloud Messaging
.
感谢此代码https://github.com/firebase/quickstart-android/tree/master/messaging我能够将 Firebase User Console 的通知发送到我的Android设备 .
是否有任何API或方式可以在不使用Firebase控制台的情况下发送通知?我的意思是,例如,PHP API或类似的东西,直接从我自己的服务器创建通知 .
11 回答
您可以使用例如用于Google Cloud Messaging(GCM)的PHP脚本 . Firebase及其控制台就在GCM之上 .
我在github上发现了这个:https://gist.github.com/prime31/5675017
提示:此PHP脚本生成android notification .
因此:如果您想在Android中接收并显示通知,请阅读this answer from Koot .
可以使用FCM HTTP v1 API endpoints 将通知或数据消息发送到firebase基础 Cloud 消息服务器 . https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send .
您需要使用Firebase控制台生成和下载服务帐户的私钥,并使用google api客户端库生成访问密钥 . 使用任何http库将消息发布到上述终点,下面的代码显示使用OkHTTP发布消息 . 您可以在firebase cloud messaging and sending messages to multiple clients using fcm topic example找到完整的服务器端和客户端代码
如果需要发送特定客户端消息,则需要获取客户端的firebase注册密钥,请参阅sending client or device specific messages to FCM server example
Firebase Cloud Messaging具有服务器端API,您可以调用它们来发送消息 . 见https://firebase.google.com/docs/cloud-messaging/server .
发送消息可以像使用
curl
来调用HTTP endpoints 一样简单 . 见https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocolSend messages to specific devices
要将消息发送到特定设备,请将其设置为特定应用程序实例的注册令牌
Send messages to topics
这里的主题是:/ topics / foo-bar
Send messages to device groups
将消息发送到设备组与将消息发送到单个设备非常相似 . 将to参数设置为设备组的唯一通知密钥
API网址:
https://fcm.googleapis.com/fcm/send
头
申请方法:
POST
Request Body
给特定设备的消息
消息到主题
消息到设备组
首先,您需要从Android获取令牌然后您可以调用此PHP代码,您甚至可以发送数据以在您的应用程序中进一步操作 .
如Frank所述,您可以使用Firebase Cloud 消息传递(FCM)HTTP API从您自己的后端触发推送通知 . 但你无法做到
将通知发送到Firebase用户标识符(UID)和
向用户细分发送通知(在用户控制台上定位属性和事件) .
含义:您必须自己存储FCM / GCM注册ID(推送令牌)或使用FCM主题订阅用户 . 还要记住 FCM is not an API for Firebase Notifications ,这是一个没有调度或开放率分析的低级API . Firebase Notifications Build 在FCM的顶部 .
或者您可以使用Firebase Cloud 功能,这对我来说是实现推送通知的更简单方法 . firebase/functions-samples
这适用于CURL
$message
是您要发送到设备的消息$id
是 devices registration tokenYOUR_KEY_HERE
是您的服务器API密钥(或旧服务器API密钥)如果你想从android发送推送通知,请查看我的博文
Send Push Notifications from 1 android phone to another with out server.
发送推送通知只是对https://fcm.googleapis.com/fcm/send的发布请求
使用齐射的代码片段:
我建议大家查看我的博文,了解完整的详细信息 .
使用Firebase Console,您可以根据应用程序包向所有用户发送消息 . 但是使用CURL或PHP API是不可能的 .
通过API您可以向特定设备ID或订阅用户发送通知,以选择主题或订阅的主题用户 .
使用服务API .
网址:
https://fcm.googleapis.com/fcm/send
方法类型:
POST
头:
车身/有效载荷:
在您的应用中,您可以在要调用的活动中添加以下代码:
另请查看Firebase onMessageReceived not called when app in background上的答案