Java 如何在android中使用FCM向单个设备发送数据消息

Java 如何在android中使用FCM向单个设备发送数据消息,java,android,firebase,firebase-cloud-messaging,Java,Android,Firebase,Firebase Cloud Messaging,我对使用Firebase cloud messaging不太熟悉,希望将包含数据的消息或通知发送到单个设备。我已经向所有设备发送了通知,但不知道如何将其发送到单个目标设备。我浏览了很多网站和教程,但都没有找到 在我所遵循的一个教程中,我在 MainActivity.java: package in.w3dev.fcm2; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActiv

我对使用
Firebase cloud messaging
不太熟悉,希望将包含数据的消息或通知发送到单个设备。我已经向所有设备发送了通知,但不知道如何将其发送到单个目标设备。我浏览了很多网站和教程,但都没有找到

在我所遵循的一个教程中,我在

MainActivity.java:

package in.w3dev.fcm2;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     FirebaseInstanceId.getInstance().getInstanceId()
            .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                @Override
                public void onComplete(@NonNull Task<InstanceIdResult> task) {
                    if (!task.isSuccessful()) {
                        return;
                    }

                    String token = task.getResult().getToken();
                    String msg = getString(R.string.fcm_token, token);
                    Log.d(TAG, msg);

                }
            });

    }
}

要向特定设备发送推送通知,后端服务器需要存储设备令牌并向该令牌发送通知

您可以检索当前设备令牌并发送到服务器,如下所示

FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
        @Override
        public void onComplete(@NonNull Task<InstanceIdResult> task) {
            if (!task.isSuccessful()) {
                return;
            }

            // Get new Instance ID token and send to server
            String token = task.getResult().getToken();
            sendTokenToServer(token);
        }
    });
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
返回;
}
//获取新实例ID令牌并发送到服务器
字符串标记=task.getResult().getToken();
sendTokenToServer(令牌);
}
});
然后,服务器将向该令牌发送推送通知到该设备


请记住,您不能使用firebase控制台将noti直接发送到特定设备,因为它没有用于此目的的UI控件。但是你可以用邮递员来测试。

更新:我解决了这个问题。我将android studio更新为最新版本,同时更新了gradle和所有其他内容,添加了最新的firebase版本依赖项,代码运行良好

使用FirebaseNotifications令牌将notifi发送到特定设备。您能解释一下我该怎么做吗?或者提供一个链接。我是FCM的新手,所以我需要具体的细节来做这个@Chandankushwaha是的,我看过了,但不明白它的答案或方法。例如,这些json代码写在哪里?在Firebase控制台中,您可以向特定用户设备发送测试通知。你必须在那里添加令牌。我们可以从控制台向特定的设备令牌发送通知。如果你看一下我问题中的代码,我已经在@ChanMyaeAung完成了这项工作。正如我所说,它显示错误:找不到符号。Idk如何解决这个问题。我还需要制作单独的客户端和服务器应用程序吗?但这怎么行呢??
FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
        @Override
        public void onComplete(@NonNull Task<InstanceIdResult> task) {
            if (!task.isSuccessful()) {
                return;
            }

            // Get new Instance ID token and send to server
            String token = task.getResult().getToken();
            sendTokenToServer(token);
        }
    });