Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
734 views
in Technique[技术] by (71.8m points)

android - Firebase device to device messaging using Retrofit, how do i get message id?

I use Retrofit for sending device to device message without php script and curl command and everything work fine. I need to save sent message ID. How can i get after success sending message ID for sent message. My code. Sending activity

public void onClick(View view) {

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
    @Override
    public okhttp3.Response intercept(Chain chain) throws IOException {
        Request original = chain.request();

        // Request customization: add request headers
        Request.Builder requestBuilder = original.newBuilder()
                .header("Authorization", "key=legacy server key from FB console"); // <-- this is the important line
        Request request = requestBuilder.build();
        return chain.proceed(request);
    }
});

httpClient.addInterceptor(logging);
OkHttpClient client = httpClient.build();

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://fcm.googleapis.com")//url of FCM message server
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())//use for convert JSON file into object
        .build();

// prepare call in Retrofit 2.0
FirebaseAPI firebaseAPI = retrofit.create(FirebaseAPI.class);

//for messaging server
NotifyData notifydata = new NotifyData("Notification title","Notification body");

Call<Message> call2 = firebaseAPI.sendMessage(new Message("...... device token ....", notifydata));

call2.enqueue(new Callback<Message>() {
    @Override
    public void onResponse(Call<Message> call, Response<Message> response) {

        Log.d("Response ", "onResponse");
        t1.setText("Notification sent");

    }

    @Override
    public void onFailure(Call<Message> call, Throwable t) {
        Log.d("Response ", "onFailure");
        t1.setText("Notification failure");
    }
});
}

POJOs

public class Message {
String to;
NotifyData notification;

public Message(String to, NotifyData notification) {
    this.to = to;
    this.notification = notification;
}

}

and

public class NotifyData {
String title;
String body;

public NotifyData(String title, String body ) {

    this.title = title;
    this.body = body;
}

}

and FirebaseAPI

public interface FirebaseAPI {

@POST("/fcm/send")
Call<Message> sendMessage(@Body Message message);

}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...