Я хочу отправить уведомление с одного устройства на другое, используя облачный обмен сообщениями firebase и библиотеку модернизации. Вот интерфейс
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;
public interface APIService {
@Headers({"Authorization:key=AAAAnRKypUg:APA91bH1BUXr0tm5iWE8VsMqcIZN....",
"Content-Type:application/json"})
@POST("fcm/send")
Call<ResponseSuccess> sendNotification(@Body NotificationSender body);
Вот ApiClient. java файл
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class ApiClient {
private static Retrofit retrofit = null;
private static final String BASE_URL = "https://fcm.googleapis.com/";
public static Retrofit getClient() {
if(retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}}
Вот главный файл, который используется для отправки уведомления.
public class Notification extends AppCompatActivity {
private APIService apiService;
EditText et;
private String receiverID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
receiverID = "Ju4qhlAIH5cTa0jAYp2m****"; //An user ID is taken just for testing to send a particular user.
apiService = ApiClient.getClient().create(APIService.class);
//Generate Token
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if(task.isSuccessful()) {
String refreshToken = task.getResult().getToken();
Token token = new Token(refreshToken);
FirebaseDatabase.getInstance().getReference("Tokens").child(user.getUid()).setValue(token);
}
}
});
}
public void sendBtn(View view) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
FirebaseDatabase.getInstance().getReference("Tokens").child(receiverID).child("token").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String receiverToken = snapshot.getValue(String.class);
notificationSend(receiverToken, "Test", "Testing Purpose");
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void notificationSend(String receiverToken, String title, String message) {
Data data = new Data(title, message);
NotificationSender sender = new NotificationSender(data, receiverToken);
apiService.sendNotification(sender).enqueue(new Callback<ResponseSuccess>() {
@Override
public void onResponse(Call<ResponseSuccess> call, Response<ResponseSuccess> response) {
if(response.code() == 200) {
}
else if(response.code() == 400) {
Log.d("Error Message: ", response.toString());
}
}
@Override
public void onFailure(Call<ResponseSuccess> call, Throwable t) {
}
});
}}
Я также реализую другие классы и службы, чтобы получить помощь в этом Учебник
Теперь основная проблема для меня в том, что ... Я всегда получаю значение response.code () - 400 . Я не могу понять и понять почему. Вы можете помочь мне?? Спасибо.