0

FCM (최신 GCM)을 사용하여 간단한 텍스트 메시지 앱을 개발하고 있는데 여기에는 ChatView를 사용하여 ListView를 사용하는 메시지 목록을 보여주는 ChatActivity라는 액티비티가 있습니다. 새로운 메시지가 도착하면 그러나, FirebaseMessagingService 클래스에 의해 처리됩니다 안드로이드 - 다른 클래스에서 ListView 항목을 동적으로 추가하는 방법

...

public class MyFcmListenerService extends FirebaseMessagingService { 

    @override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 

     String from = remoteMessage.getFrom(); 
     Map<String, String> data = remoteMessage.getData(); 
     String body = rawData.get("body"); 

     Log.i("From",from); 
     Log.i("Message",body); 

    } 
} 

새로운 메시지가 도착 성공적 때마다 콘솔에서이 클래스 인쇄 메시지.

내 질문에, FCM에서 onMessageReceived() 클래스의 새 메시지를 받았을 때 ChatActivity의 ListView에 어떻게 그 문자열 메시지를 추가 할 수 있습니까?

ListView에 항목을 추가 한 후 어떻게 ListView Adapter에서 .notifyDataSetChanged()를 호출 할 수 있습니까?

+0

그냥 호기심. Firebase의 실시간 데이터베이스를 채팅 앱으로 사용하지 않는 이유는 무엇입니까? 사용 사례에 따라 구현하기가 더 쉽습니다. –

+0

더 많은 관련 노트에서 기술적으로 이것은 [서비스에서 작업으로 데이터 전달]과 같습니다 (http://stackoverflow.com/questions/14351674/send-data-from-service-to-activity-android). –

답변

0

메시지를 받으면 ListView에 액티비티로 데이터를 전달할 수있는 여러 가지 방법이 있습니다. 한 가지 간단한 방법은 활동에 BroadcastReceiver를 설정 한 다음 FCM 메시지를 받으면 LocalBroadcastManager를 사용하여 활동에서 ListView 어댑터를 업데이트해야 함을 나타내는 브로드 캐스트를 보낼 수 있습니다. 자세한 내용은 LocalBroadcastManager을 참조하십시오.

@McAwesomville은 Firebase Realtime Database을 사용하는 것이 좋습니다 (옵션). Firebase Android Codelab에있는 간단한 채팅 응용 프로그램에서 사용할 수 있습니다.

+0

감사합니다. LocalBroadcastManager가 내 결과를 얻는데 도움이되었습니다. –

0

내 응용 프로그램에서 FirebaseUI를 사용하고 있으며 매우 잘 작동합니다. 그것에 대해 자세히 알 수 있습니다 here.