méthodes d'intégration financière nuage IM Android et certains résolution de problèmes

l'information financière de manière intégrée nuage IM aussi peu en ligne, peut encore regarder, ainsi que des informations sur le site officiel de l'AQ est assez bonne, est la langue officielle de démonstration peut être plus, et maintenant fin Android un jour une sorte, démo semble difficile et en cours d'exécution.

Les documents officiels rédigés en détail: https://www.rongcloud.cn/docs/#necessary

  1. Tout d'abord, vous inscrire et obtenir App clé / secret, ce qui nécessite que la fin clé Android APP peut être.
  2. Téléchargez et importez imlib IMkIt, qui imlib est la bibliothèque de base, IMkit est une bibliothèque d'interface UI, il est recommandé d'introduire Lib, réintègrent le kit, la dernière vérification, le besoin de Kit compter Lib.
  3. Dans AndroidManifest configuré, la nécessité d'accroître leur activité dans le manifeste de l'application, mais le nom du package, je viens de changer un projet, à la recherche depuis longtemps que pour trouver le nom du package en question correspondante. En outre, la nécessité de modifier appKey dans imlib.
  4. Initialisées dans l'application.

 

Ceci est même intégré dans presque entrai, voici le code à l'étape

  1. Après le premier utilisateur est connecté au serveur de messagerie instantanée, les utilisateurs doivent passer un jeton, ajoutez l'utilisateur lorsque les nuages ​​financiers renverront le de jeton utilisateur, la nécessité jeton à enregistrer de façon permanente votre propre serveur de base de données, la connexion de l'utilisateur compte de son propre système, ce retour cheveux Token, puis utiliser le jeton Connexion IM.
  2. nuage financier ne fournit pas un utilisateur ajoute un ami, et la fonction de la liste des utilisateurs, si cette fonction, vous pouvez gérer votre propre serveur. messages d'envoi targetId ne doivent envoyer.
  3. Ce qui suit doit être l'interface de message de configuration, vous pouvez l'interface utilisateur interface fournie par l'adoption officielle. Depuis que j'utilisais AndroidX si l'expérience fragment inhabituel ne peut pas être converti, mais après avoir vu le QA officiel, a déclaré l'erreur peut encore effectuer (j'ai aussi essayé AS est migrate à la fonction androidX, mais il se sent inutile)
    importation androidx.appcompat.app.AppCompatActivity;
    importation androidx.fragment.app.FragmentManager;
    importation android.net.Uri;
    importation android.os.Bundle;
    importation io.rong.imkit.fragment.ConversationListFragment;
    importation io.rong.imlib.model.Conversation; 
    
    publique  classe ConversationListActivity étend AppCompatActivity { 
    
        @Override 
        protégé  vide onCreate (Bundle savedInstanceState) {
             super .onCreate (savedInstanceState); 
            setContentView (R.layout.activity_conversation_list); 
    
            FragmentManager fragmentManage =getSupportFragmentManager (); 
            ConversationListFragment fragement = (ConversationListFragment) fragmentManage.findFragmentById (R.id.conversationlist); 
            Uri uri = Uri.parse ( "rong: //" + . GetApplicationInfo () packageName) .buildUpon () 
                    .appendPath ( "conversationlist" ) 
                    .appendQueryParameter (Conversation.ConversationType.PRIVATE.getName (), "false" ) 
                    .appendQueryParameter (Conversation.ConversationType.GROUP.getName (), "false" ) 
                    .appendQueryParameter (Conversation.ConversationType.PUBLIC_SERVICE.getName (), "false" )
                    .appendQueryParameter (Conversation.ConversationType.APP_PUBLIC_SERVICE.getName (), "false" ) 
                    .appendQueryParameter (Conversation.ConversationType.SYSTEM.getName (), "true" ) 
                    .build (); 
            fragement.setUri (uri); 
    
        } 
    }

    Ici erreur est normal 

  4. La dernière est une page de discussion spécifique, où le besoin d'écrire leur propre page de titre, vous pouvez obtenir des données de l'intention.
    importation androidx.appcompat.app.AppCompatActivity;
    importation androidx.fragment.app.FragmentManager;
    importation android.net.Uri;
    importation android.os.Bundle;
    importation io.rong.imkit.fragment.ConversationFragment;
    importation io.rong.imlib.model.Conversation; 
    
    publique  classe ConversationActivity étend AppCompatActivity { 
    
    
    //     privée Conversation.ConversationType mConversationType;
    //     private String mTargetId; 
    
        @Override 
        protégé  vide onCreate (Bundle savedInstanceState) {
             super .onCreate (savedInstanceState);
            setContentView (R.layout.activity_conversation); 
    
    //         mTargetId = getIntent () getStringExtra ( "targetId").
    //         mConversationType = (Conversation.ConversationType) getIntent () getSerializableExtra ( "conversationType"). 
            Données uri = getIntent () getData (). 
            Titre String = getIntent () getData () getQueryParameter ( "titre".. ); 
            Chaîne targetId = getIntent () getData () getQueryParameter ( "targetId".. ); 
            Conversation String = getIntent () getData () getQueryParameter ( la "conversation".. ); 
            Type Conversation.ConversationType = Conversation.ConversationType.
    
            FragmentManager fragmentManage = getSupportFragmentManager (); 
            ConversationFragment fragement = (ConversationFragment) fragmentManage.findFragmentById (R.id.conversation);
    //         Uri uri = Uri.parse ( "rong: // ". + GetApplicationInfo () packageName) .buildUpon ()
     //                 . .AppendPath ( "conversation") appendPath (. Type.getName () toLowerCase ())
     //                 .appendQueryParameter ( "targetId", targetId) .build (); 
    
            fragement.setUri (données); 
        } 
    }

    Voici quelques-uns des problèmes rencontrés

  1. Liste des messages page de mon projet utilise un fragment + ViewPage façon, mais le caractère officiel, mais il est activité, et je dois également ajouter des contrôles supplémentaires dans la page de la liste des messages, alors j'ai utilisé le fragment de fragment dans l'ensemble fourni par IM.
    publique  classe MessageFragment étend BaseFragment { 
    
        chaîne packageName; 
        publique MessageFragment (String packageName) {
             ce .packageName = packageName; 
        } 
    
        @Override 
        protégé  int provideContentViewId () {
             retour R.layout.fragment_message_list; 
        } 
    
        @BindView (R2.id.vp_contain) FrameLayout vp_contain; 
        @BindView (R2.id.toolbar) Barre d' outils Barre d' outils; 
    
        @Override 
        publique  vide initView (Voir rootView) {
             super  .initView (rootView);
            de transaction FragmentTransaction =getChildFragmentManager () beginTransaction () ;. 
            Fragment homeFragment = setConversationView (); 
            transaction.add (vp_contain.getId (), homeFragment); 
            transaction.show (homeFragment) .commit (); 
        } privé Fragment setConversationView () { 
            ConversationListFragment conversationListFragment = new new ConversationListFragment (); 
            conversationListFragment.setAdapter ( nouvelle nouvelle ConversationListAdapterEx (RongContext.getInstance ())); // page liste personnalisée (ci - dessous par exemple, non, vous pouvez supprimer) 
            uri uri = Uri.parse ( "rong: //" + packageName) .buildUpon (). AppendPath ( "activity_chat_main")
                    .appendQueryParameter (Conversation.ConversationType.PRIVATE.getName (), "false" ) 
                    .appendQueryParameter (Conversation.ConversationType.GROUP.getName (), "false" ) 
                    .appendQueryParameter (Conversation.ConversationType.SYSTEM.getName (), "true" ).construire(); 
            conversationListFragment.setUri (uri); 
            retourner conversationListFragment; 
        } 
    }
     
       
    activity_conversation.xml
    <? xml version = "1.0" encoding = "utf-8" >? 
    < LinearLayout
         xmlns: android = "http://schemas.android.com/apk/res/android" 
    
        android: layout_width = "match_parent" 
        android: layout_height = » match_parent " 
        android: orientation = "vertical" > 
    
        < TextView
             android: id = "@ + id / tv_title" 
            android: text = "用户名" 
            android: textSize = "30SP" 
            android: gravité = "center_horizontal" 
            android: layout_width =" match_parent »
        fragment
             android: id = "@ + id / conversation" 
            android: nom = "io.rong.imkit.fragment.ConversationFragment" 
            android: layout_width = "match_parent" 
            android: layout_height = "match_parent"  /> 
    </ LinearLayout >

    2. La dernière version de la messagerie instantanée semble que pour obtenir les informations d'identification et ne peut pas obtenir un nom d'utilisateur, de sorte que la page de la liste des messages, montrant que l'ID utilisateur, et je veux montrer est le nom d'utilisateur. Cela suppose de modifier la page de données de la liste. La nécessité d'obtenir un nom d'utilisateur à partir de votre propre serveur, puis mis en cache dans le téléphone, il doit tenir compte de la situation des différents projets. Quand peut interroger l'autre numéro de téléphone de son, le retour ID de l'autre et le nom d'utilisateur, vous ne pouvez pas trouver dans le cas de la section locale, de demander leurs propres serveurs.

    importation android.content.Context;
    importation android.view.View;
    importation android.view.ViewGroup; 
    
    importation io.rong.imkit.model.UIConversation;
    importation io.rong.imkit.userInfoCache.RongUserInfoManager;
    importation io.rong.imkit.widget.adapter.ConversationListAdapter;
    importation io.rong.imlib.model.Conversation;
    importation io.rong.imlib.model.UserInfo; 
    
    publique  classe ConversationListAdapterEx étend ConversationListAdapter {
         publique ConversationListAdapterEx (contexte de contexte) {
             super (contexte); 
        } 
    
        @Override
        protégé Voir NewView (contexte de contexte, int position groupe ViewGroup) {
             retour  super .newView (contexte, la position, le groupe); 
        } 
    
        @Override 
        protégé  vide Bindview (Voir v, int position données UIConversation) {
             si (data.getConversationType () est égal à (Conversation.ConversationType.DISCUSSION).) 
                Data.setUnreadType (UIConversation.UnreadRemindType.REMIND_ONLY); 
            UserInfo userInfo =   RongUserInfoManager.getInstance () GetUserInfo (data.getUIConversationTitle ()).
            si (UserInfo! = null  ) {
                String s= UserInfo.toString (); 
                data.setUIConversationTitle (s); 
            } 
            Super .bindView (v, la position, des données); 
        } 
    }
        @Override
         publique  vide getUserIdSuccess (utilisateur UserBean) { 
            . RongIM.getInstance () startConversation (getContext (), Conversation.ConversationType.PRIVATE, user.getUserId () + "", "悟空" ); 
            UserInfo userInfo = nouveau UserInfo (user.getUserId () + "", user.getUserName (), null ); 
            . RongUserInfoManager.getInstance () setUserInfo (userInfo); 
        }

     

    Ici, l'utilisation des outils fournis par IM cache utilisateur :. RongUserInfoManager.getInstance () GetUserInfo (data.getUIConversationTitle ()), nécessaire après l'acquisition réussie d'informations utilisateur stockées localement.

   

 

Je suppose que tu aimes

Origine www.cnblogs.com/shunlibest/p/12466907.html
conseillé
Classement