在Android集成腾讯云通信的时候遇到一个问题。在Activity中实现了腾讯云通信SDK里的TIMMessageListener类后通过onNewMessage方法接收云端的新消息。
但是,这个监听方法并不能在每个Activity里面实现。
1Activity里面实现了这个方法,并且在测试中接收到了新消息,但是跳转到2Activity之后再次实现了这个方法,并且在测试中也接收到了新消息,再返回到1Activity后就无法监听到新消息了,目测是因为在2Activity中这个方法被重新实现,所以之前实现的监听就报废了,当2Activity被销毁后,1Activity里面的监听无法恢复。
这是我碰到的问题。
我想问一下各位大神,该如何设计这个即时通讯功能。
比如说我需要在每个页面都监听新消息以便发送Notification,另外,需要给部分页面的图标增加角标,顺便在会话页面实现聊天过程。
本人刚刚入门,不是很了解整个流程,请大神指教。
IM의 일반적인 논리:
푸시 메시지 수신을 위해
Service
을 구현(즉, SDK의TIMMessageListener
등록)한 후Context.sendOrderedBroadcast(Intent, String)
을 호출하여 메시지를 순서대로 방송은
android:priority="-999"
의BroadcastReceiver
을 구현하여 AndroidManifest.xml에 등록하여Service
에서 보낸 주문된 브로드캐스트를 수신하고Notification
을 통해 상태 표시줄에 보냅니다. , 따라서 드디어 위의 방송을 받게 됩니다위에서 주문한 방송을 받으려면
Activity
/Fragment
에BroadcastReceiver
을 등록하세요. 이BroadcastReceiver
의 기본 레벨이 2에서 등록한BroadcastReceiver
보다 높기 때문에 방송이 수신됩니다. 먼저 여기서 차단 처리를 할 수 있습니다(코드는 다음과 같습니다): 대화 페이지가 열린 후에는 더 이상 상태 표시줄 알림을 통해 새 메시지가 수신되지 않습니다.Activity
/Fragment
이 닫히면 위의 등록을 취소합니다.BroadcastReceiver
이때 상태 표시줄의 새 메시지 알림이 복원되었습니다.주요 지식 포인트:
순차방송
개인 권한
참고 도서:
안드로이드 프로그래밍 결정판 2판 27장 - 방송 의도 (초판은 30장, 영문판은 아래와 같습니다)
Android 프로그래밍: Big Nerd Ranch 가이드
p.s. 피청구인은 이 책을 완전히 읽었습니다. 책에 있는 지식 내용은 기본적으로 공식 문서가 포함된 중국 서적과 동일합니다. 이는 큰 문제이므로 인터넷에서 영문 전자파일을 다운로드 받는 것을 권장합니다.