Что я хочу: Я хочу отправить уведомление с Консоль Firebase . Когда приложение находится в фоновом режиме / убивает, и когда пользователь нажимает Push Notification , оно может перейти к определенной активности. Давайте назовем это Активность текущих предложений . То же самое должно произойти, пока приложение будет на переднем плане.
Что я понял: Из документы Firebase , когда приложение находится на переднем плане, push-уведомления, отправленные из Консоль Firebase , будут получены в методе onMessageReceived
MyFirebaseMessagingService
класс. Но когда приложение находится в фоновом режиме / kill, метод onMessageReceived
класса MyFirebaseMessagingService
не будет вызван.
Что я хочу: Когда приложение находится в фоновом режиме / убивает и пользователь нажимает на push-уведомление, я хочу перенаправить пользователя к определенной активности ( Активность текущих предложений ).
Я пытался этот ответ , но я не получил решение.
Мой код похож на ниже.
MyFirebaseMessagingService.java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private final String TAG = "mk";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e(TAG, "Message Body: " + remoteMessage.getNotification().getBody());
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private final String TAG = "mk";
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.e(TAG, "MyFirebaseInstanceIDService Token: " + refreshedToken);
}
}
ActivityOne.java
public class ActivityOne extends AppCompatActivity {
private final String TAG = "mk";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Intent intent = getIntent();
if (intent != null && intent.getExtras() != null) {
Bundle extras = intent.getExtras();
for (String key : extras.keySet()) {
Log.e(TAG, key + " : " + extras.get(key));
}
}
Log.e(TAG, "Token: " + refreshedToken);
//sendNotificationToPatner();
}
private void sendNotificationToPatner() {
Log.e(TAG, "in sendNotificationToPatner: ");
SendNotificationModel sendNotificationModel = new SendNotificationModel("check", "i miss you");
RequestNotificaton requestNotificaton = new RequestNotificaton();
requestNotificaton.setSendNotificationModel(sendNotificationModel);
requestNotificaton.setToken("cJ-y3b3mnYk:APA91bEYTp1LtfpMHp-wdvKkq1_dVYF4DXl1SHWIaw0guwPSoTyFtbcJjPPB6GhP0FuRd9ybJ--BM6W3aFB-2-3KpVOBDITX91QV4kH1lAgxsIxHcfaj5FQLOIZ0t_HDC2bd8hqJrH-F4x_wuunJfYzanAagm4xcaA");
ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
retrofit2.Call<ResponseBody> responseBodyCall = apiService.sendChatNotification(requestNotificaton);
responseBodyCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
Log.d(TAG, "in onResponse");
}
@Override
public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {
Log.d(TAG, "in onFailure");
}
});
}
}
Заранее спасибо.