我是一个新手,在 https://firebase.google.com/docs/cloud-messaging/server 上了解如何使用 FCM(Firebase Cloud Messaging)通知 Android 应用程序。在了解 FCM 服务器页面要求的过程中,我发现以下内容:
你必须在环境中实现一个应用服务器。此应用服务器通过所选的 FCM 连接服务器,使用适当的 XMPP 或 HTTP 协议向客户端应用发送数据。
然而,我对此感到非常困惑。在阅读更多文章时,我看到了以下 API:
POST http://fcm.googleapis.com/fcm/send
如果我使用类似于 OkHttpClient
的东西调用此 API,并像这样构建我的请求(假设我已经包含身份验证标头和 POST 主体):
private void sendRegistrationToServer(String token) {
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder().add(“Body", "").build();
//Assuming I have authentication and body put in
Request request = new Request.Builder().url("http://fcm.googleapis.com/fcm/send”).post(body).build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}
理论上,我能够向该设备发送任何所需信息的通知吗?我可以通过以下类接收消息:
public class NotificationService extends FirebaseMessagingService {
...
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}
我相信我的理解有误,因为文档确实说我们需要一个应用服务器,但如果有人能指出我在如何实现FCM通知方面的误解,那就太好了。如果有人能举例说明何时或何处需要应用服务器,或者如何实际实现它,那也将不胜感激。谢谢!