0

Я программирую приложение, которое получает некоторые данные из сообщения FCM, а затем обновляет пользовательский интерфейс на основе данных, содержащихся в сообщении.Доступ к данным из Firebase Service в основной теме

Служба работает нормально и получает данные, но я не могу понять, как вернуть ее к моей основной деятельности.

Firebase служба объявлена ​​в моем проявляется как

<service android:name=".MyFirebaseService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
    </intent-filter> 
</service> 

В моем классе MyFirebaseService я переопределен в onMessageReceived метод, но как я должен уведомить свою основную деятельность, которая получила сообщение?

Есть ли обработчик, который я могу использовать с службой Firebase?

+0

да вы можете слушать намерения прийти к основной деятельности –

+0

я не получаю то, что вам нужно? –

ответ

1
dev.android.com > Develop > Training > Background Jobs > Reporting Work Status 

https://developer.android.com/training/run-background-service/report-status.html

Чтобы отправить статус запрос работы в IntentService для r , сначала создайте намерение, которое содержит статус в его расширенных данных .

Затем отправьте намерение, позвонив по телефону LocalBroadcastManager.sendBroadcast(). Это отправляет Intent любому компоненту в вашем приложении, которое зарегистрировалось для его получения.

Intent localIntent = new Intent(BROADCAST_ACTION).putExtra(DATA_STATUS, status); 
LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent); 

Чтобы получить транслируемые Intent объекты, используйте подкласс BroadcastReceiver. В подклассе выполните метод обратного вызова , который LocalBroadcastManager вызывает, когда он получает намерение. LocalBroadcastManager передает входящее намерение BroadcastReceiver.onReceive().

Для того, чтобы зарегистрировать BroadcastReceiver и IntentFilter с системой , получить экземпляр LocalBroadcastManager и вызвать его метод registerReceiver().

LocalBroadcastManager.getInstance(this) 
    .registerReceiver(mDownloadStateReceiver, statusIntentFilter); 
1

вот мои сообщения обрабатывать

Intent intent = new Intent(this, MainActivity.class); 
    intent.putExtra("title", fcmTitle); 
    intent.putExtra("summary", fcmSummary); 
    intent.putExtra("message", fcmMessage); 
    intent.putExtra("imageUrl", fcmImageUrl); 
    intent.putExtra("goto", fcmGoto); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(App.getAppContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT); 

вы можете иметь что-то вроде этого, чтобы слушать в основной деятельности

Boolean bolGoto = false; 
    if (getIntent().getExtras() != null) { 
     for (String key : getIntent().getExtras().keySet()) { 
      //String value = getIntent().getExtras().getString(key); 
      if (key.equals("goto")){ 
       bolGoto = true; 
      } 
     } 
    } 
    if (bolGoto){ 
     handleFCMNotification(getIntent()); 
    } 
Смежные вопросы