我开始使用新的Google服务进行通知Firebase Cloud Messaging.
感谢此代码https://github.com/firebase/quickstart-android/tree/master/messaging我能够将Firebase用户控制台的通知发送到我的Android设备.
是否有任何API或方式可以在不使用Firebase控制台的情况下发送通知?我的意思是,例如,PHP API或类似的东西,直接从我自己的服务器创建通知.
搜索文档后,我找不到任何有关如何使用FCM将设备发送到设备消息的信息,而无需使用外部服务器.
例如,如果我正在创建一个聊天应用程序,我需要向用户发送有关未读消息的推送通知,因为它们不会一直在线,我不能在后台始终连接到持久服务实时数据库,因为这太资源了.
那么当某个用户"B"向他/她发送聊天消息时,如何向用户"A"发送推送通知?我是否需要外部服务器,还是仅使用Firebase服务器?
我正在考虑在数据库中保留所有注册ID(推送令牌)并从iPhone发送通知给用户.我试过这样的事情,但没有得到任何通知.
func sendPNMessage() {
FIRMessaging.messaging().sendMessage(
["body": "hey"],
to: TOKEN_ID,
withMessageID: "1",
timeToLive: 108)
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么或者根本不可能做到这一点?
ios firebase google-cloud-messaging firebase-cloud-messaging firebase-notifications
Firebase提供的示例是:
您的 Android 应用程序可以使用以下命令发送上游消息
FirebaseMessaging.send:Run Code Online (Sandbox Code Playgroud)FirebaseMessaging fm = FirebaseMessaging.getInstance(); fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com") .setMessageId(Integer.toString(msgId.incrementAndGet())) .addData("my_message", "Hello World") .addData("my_action","SAY_HELLO") .build());
他们解释了消息 ID 是什么:
对于每个发件人 ID 来说,消息 ID 应该是唯一的。
然而,我并没有明白他们的确切意思。那么,每次我发送一条消息时,这个数字都会增加吗?是什么原因?我在哪里存储这个值?
他们也有方法addData(),但我不完全明白这是做什么的。对此方法的完整、详细的解释将被接受。
我想要一个代码来将通知从一台设备发送到多台设备上的特定主题,并且我想在订阅该主题的设备上显示该通知?我将使用 firestore 来存储数据和存储令牌,并使用 Firebase 消息传递来发送通知
我正在尝试POST通过HTTP在代码中或使用REST调试器在Firebase 发送请求,但它返回错误:
HTTP/1.1 401请求缺少验证密钥(FCM令牌).请参阅https = // firebase.google.com/docs上FCM文档的"身份验证"部分
使用Chrome中的Postman扩展程序,它可以正常运行.
这是代码:
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
IdHTTP, IdIOHandler, IdIOHandlerStream,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdSSLOpenSSLHeaders_Static,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo,
IdGlobal, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdServerIOHandler, IdCoderMIME;
begin
try
IdIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdIOHandler.ReadTimeout := IdTimeoutInfinite;
IdIOHandler.ConnectTimeout := IdTimeoutInfinite;
IdHTTP := TIdHTTP.Create(nil);
try
idHttp.Request.Clear;
idHttp.Request.CustomHeaders.Clear;
idHttp.Request.ContentType := 'application/json';
idhttp.Request.Charset := 'UTF-8';
IdHTTP.IOHandler := IdIOHandler;
IdHTTP.ReadTimeout := IdTimeoutInfinite;
IdHTTP.Request.Connection := 'Keep-Alive';
IdIOHandler.SSLOptions.Method := sslvSSLv23;
IdHTTP.Request.Method := 'POST';
IdHTTP.Request.CustomHeaders.Values['Authorization:key'] …Run Code Online (Sandbox Code Playgroud)