Уведомление не получено, но похоже, что отправка прошла успешно с использованием Firebase и Retrofit2 в Android - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над уведомлением, но после отправки A уведомление B не может получить уведомление. Я добавил Toast для проверки, и я вижу, что отправка прошла успешно, но похоже, что onMessageReceived не вызывается. Не могли бы вы помочь, где я ошибаюсь? Спасибо!!

Манифест

 <service android:name=".notifications.FirebaseService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_SERVICE"/>
            </intent-filter>
        </service>

        <service
            android:name=".notifications.FirebaseMessaging"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

Это onMessageReceived (). Я не мог видеть "сообщение получено"

    public class FirebaseMessaging extends FirebaseMessagingService
    {
        @Override
        public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);
            //get current user from share preference
            SharedPreferences sp = getSharedPreferences("SP_USER", MODE_PRIVATE);
            String savedCurrentUser = sp.getString("Current_USER", "None");

            Toast.makeText(this, "message received", Toast.LENGTH_SHORT).show();

            String sent = remoteMessage.getData().get("sent");
            String user = remoteMessage.getData().get("user");
            FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
            if(fUser != null && sent.equals(fUser.getUid())) {
                if(!savedCurrentUser.equals(user)){
                    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
                       sendOAndAboveNotification(remoteMessage); 
                    }else {
                        sendNormalNotification(remoteMessage);
                    }
                }
            }


        }

Здесь я отправляю уведомление и вижу сообщение "Ответ"

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot ds: dataSnapshot.getChildren()) {
                    Token token = ds.getValue(Token.class);
                    Data data = new Data(uid,name+":"+message,"New Message",destinationUid,R.drawable.icon_byb_final7);

                    Sender sender = new Sender(data, token.getToken());
                    apiService.sendNotification(sender)
                            .enqueue(new Callback<Response>() {
                                @Override
                                public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
                                    Toast.makeText(MessageActivity.this,"Response"+response.message(),Toast.LENGTH_SHORT).show();
                                }

                                @Override
                                public void onFailure(Call<Response> call, Throwable t) {

                                }
                            });
                }
            }

1 Ответ

0 голосов
/ 22 апреля 2020

Похоже, что код правильный, и он не работает, если я использую оба телефона-эмулятора. Если вы видите ту же проблему, вы можете попробовать установить приложение на свой мобильный и попробовать его из эмулятора. Меня устраивает.

...