Android集成腾讯云通信关于全局消息监听的实现
伊谢尔伦
伊谢尔伦 2017-04-18 09:16:06
0
1
604

在Android集成腾讯云通信的时候遇到一个问题。在Activity中实现了腾讯云通信SDK里的TIMMessageListener类后通过onNewMessage方法接收云端的新消息。
但是,这个监听方法并不能在每个Activity里面实现。
1Activity里面实现了这个方法,并且在测试中接收到了新消息,但是跳转到2Activity之后再次实现了这个方法,并且在测试中也接收到了新消息,再返回到1Activity后就无法监听到新消息了,目测是因为在2Activity中这个方法被重新实现,所以之前实现的监听就报废了,当2Activity被销毁后,1Activity里面的监听无法恢复。
这是我碰到的问题。
我想问一下各位大神,该如何设计这个即时通讯功能。
比如说我需要在每个页面都监听新消息以便发送Notification,另外,需要给部分页面的图标增加角标,顺便在会话页面实现聊天过程。
本人刚刚入门,不是很了解整个流程,请大神指教。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(1)
刘奇

Logique générale de la messagerie instantanée :

  1. Mettre en œuvre un Service pour recevoir des messages push (c'est-à-dire enregistrer le TIMMessageListener du SDK), puis appeler Context.sendOrderedBroadcast(Intent, String)pour diffuser les messages de manière ordonnée

  2. implémente un android:priority="-999" de BroadcastReceiver et l'enregistre dans AndroidManifest.xml pour recevoir la diffusion commandée envoyée par Service et l'envoyer à la barre d'état via Notification puisque le niveau est très bas. , par conséquent, il recevra enfin la diffusion ci-dessus

  3. Enregistrez Activity dans Fragment/BroadcastReceiver pour recevoir la diffusion commandée ci-dessus Étant donné que le niveau par défaut de ce BroadcastReceiver est supérieur au BroadcastReceiver enregistré en 2, les diffusions seront reçues. tout d'abord, nous pouvons ici effectuer un traitement d'interception (le code est le suivant) : Une fois la page de conversation ouverte, les nouveaux messages ne seront plus reçus via la notification de la barre d'état. Lorsque Activity/Fragment est fermé, désenregistrez ce qui précède. BroadcastReceiver , à ce moment-là, la notification de rappel de nouveau message dans la barre d'état a été restaurée.

private BroadcastReceiver mReceiverInActivityOrFragment = new BroadcastReceiver() {
    // TODO ...
    setResultCode(Activity.RESULT_CANCELED); 
}

Points de connaissance clés :

  1. Diffusion ordonnée

  2. Autorisations privées

Ouvrages de référence :

  • Le guide définitif de la programmation Android, 2e édition, chapitre 27 - Intention de diffusion (la première édition est le chapitre 30, la version anglaise est la suivante)

  • Programmation Android : le guide du Big Nerd Ranch

p.s. Le répondant n'est pas un partisan du livre. Le répondant a lu ce livre dans son intégralité. Les points de connaissance du livre correspondent essentiellement aux documents officiels, et il est plus pertinent pour. le sujet. C'est un problème majeur, je recommande donc que le fichier électronique en anglais puisse être téléchargé sur Internet.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal