Android nube de IM métodos de integración financiera y un poco de solución de problemas

información financiera de forma integrada en línea nube de IM también pocos, todavía puede mirar, así como información en el sitio web oficial de control de calidad es bastante buena, es la demostración oficial puede ser de mayor edad, y al final un día a la clase ahora Android, parece difícil de demostración en funcionamiento.

Los documentos oficiales escritos en gran detalle: https://www.rongcloud.cn/docs/#necessary

  1. En primer lugar, registrarse y obtener la aplicación Tecla / secreto, que sólo requiere finales clave de Android APP puede ser.
  2. Descargar e importación Imlib IMkIt, que Imlib es la biblioteca central, es IMkit biblioteca de interfaz de la interfaz de usuario, se recomienda introducir Lib, volver a entrar en el kit, la última comprobación, Kit necesidad de confiar Lib.
  3. En AndroidManifest configurado, la correspondiente necesidad de aumentar su actividad en el manifiesto de la aplicación, pero el nombre del paquete, sólo cambió un proyecto, buscando por mucho tiempo sólo para encontrar el nombre del paquete en cuestión. Además, la necesidad de modificar appKey en Imlib.
  4. Ya iniciada en la aplicación.

 

Esto es aún integrado en casi entrando, aquí está el código para la etapa

  1. Después de que el primer usuario se conecta al servidor de mensajería instantánea, los usuarios tienen que pasar una ficha, agregar el usuario cuando las nubes financieros volverán simbólico del usuario, la necesidad de contadores a guardar permanentemente su propio servidor de base de datos, el nombre de usuario de cuenta de su propio sistema, la esto de nuevo el pelo de emergencia y, a continuación, utilizar el token de registro de mensajería instantánea.
  2. nube financiera no proporciona un usuario añade un amigo, y la función de lista de usuarios, si esta función, puede administrar su propio servidor. Enviar mensajes de targetid sólo tienen que enviar.
  3. Lo siguiente debe ser la interfaz de mensaje de configuración, donde se puede interfaz de usuario de interfaz proporcionada por la aprobación oficial. Desde que estaba usando AndroidX así experimentar fragmento inusual no se puede convertir, pero después vi el control de calidad oficial, dijo el error aún puede realizar (También probé AS viene migran a la función androidX, pero se siente inútil)
    importación androidx.appcompat.app.AppCompatActivity;
    importación androidx.fragment.app.FragmentManager;
    importación android.net.Uri;
    importación android.os.Bundle;
    importación io.rong.imkit.fragment.ConversationListFragment;
    importación io.rong.imlib.model.Conversation; 
    
    público  de clase ConversationListActivity extiende AppCompatActivity { 
    
        @ Override 
        protegida  vacío onCreate (Bundle savedInstanceState) {
             súper .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 (), "falso" ) 
                    .appendQueryParameter (Conversation.ConversationType.GROUP.getName (), "falso" ) 
                    .appendQueryParameter (Conversation.ConversationType.PUBLIC_SERVICE.getName (), "falso" )
                    .appendQueryParameter (Conversation.ConversationType.APP_PUBLIC_SERVICE.getName (), "falso" ) 
                    .appendQueryParameter (Conversation.ConversationType.SYSTEM.getName (), "true" ) 
                    .build (); 
            fragement.setUri (URI); 
    
        } 
    }

    Aquí error es normal 

  4. La última es una página específica de chat, donde la necesidad de escribir su propia página de título, puede obtener algunos datos de la Intención.
    importación androidx.appcompat.app.AppCompatActivity;
    importación androidx.fragment.app.FragmentManager;
    importación android.net.Uri;
    importación android.os.Bundle;
    importación io.rong.imkit.fragment.ConversationFragment;
    importación io.rong.imlib.model.Conversation; 
    
    público  de clase ConversationActivity extiende AppCompatActivity { 
    
    
    //     privada Conversation.ConversationType mConversationType;
    //     mTargetId cadena privada; 
    
        @ Override 
        protegida  vacío onCreate (Bundle savedInstanceState) {
             súper .onCreate (savedInstanceState);
            setContentView (R.layout.activity_conversation); 
    
    //         mTargetId = getIntent () getStringExtra ( "targetId.");
    //         mConversationType = (Conversation.ConversationType) getIntent () getSerializableExtra ( "conversationType."); 
            URI de datos = getIntent () getData ().; 
            String title = getIntent () getData () getQueryParameter ( "título".. ); 
            Cadena targetId = getIntent () getData () getQueryParameter ( "targetId".. ); 
            Conversación Cadena = getIntent () getData () getQueryParameter ( "conversación".. ); 
            Tipo Conversation.ConversationType = Conversation.ConversationType.
    
            FragmentManager fragmentManage = getSupportFragmentManager (); 
            ConversationFragment fragement = (ConversationFragment) fragmentManage.findFragmentById (R.id.conversation);
    //         Uri uri = Uri.parse ( "rong: // ". + GetApplicationInfo () packageName) .buildUpon ()
     //                 . .AppendPath ( "conversación") appendPath (. Type.getName () toLowerCase ())
     //                 .appendQueryParameter ( "targetId", targetId) .build (); 
    
            fragement.setUri (datos); 
        } 
    }

    Éstos son algunos de los problemas encontrados

  1. página de la lista de mensajes de mi proyecto utiliza un fragmento manera + ViewPage, pero la forma oficial, pero es la actividad, y también tengo que añadir controles adicionales en la página de lista de mensajes, por lo que utiliza el fragmento fragmento en el conjunto proporcionada por IM.
    público  de clase MessageFragment extiende BaseFragment { 
    
        Cadena packageName; 
        pública MessageFragment (String packageName) {
             este .packageName = packageName; 
        } 
    
        @ Override 
        protegida  int provideContentViewId () {
             retorno R.layout.fragment_message_list; 
        } 
    
        @BindView (R2.id.vp_contain) FrameLayout vp_contain; 
        @BindView barra de herramientas (R2.id.toolbar) Barra de herramientas; 
    
        @ Override 
        pública  vacío initView (Ver rootView) {
             súper  .initView (rootView);
            transacción FragmentTransaction =getChildFragmentManager () beginTransaction () ;. 
            Fragmento homeFragment = setConversationView (); 
            transaction.add (vp_contain.getId (), homeFragment); 
            transaction.show (homeFragment) .commit (); 
        } privada Fragmento setConversationView () { 
            ConversationListFragment conversationListFragment = nuevo nuevo ConversationListFragment (); 
            conversationListFragment.setAdapter ( nueva nueva ConversationListAdapterEx (RongContext.getInstance ())); // página de lista personalizada (por debajo por ejemplo, no se puede eliminar) 
            uri uri = Uri.parse ( "rong: //" + packageName) .buildUpon (). AppendPath ( "activity_chat_main") 
                    .AppendQueryParameter (Conversation.ConversationType.PRIVATE.getName (), "falso" ) 
                    .appendQueryParameter (Conversation.ConversationType.GROUP.getName (), "falso" ) 
                    .appendQueryParameter (Conversation.ConversationType.SYSTEM.getName (), "verdadero " ) .build (); 
            conversationListFragment.setUri (URI); 
            volver 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: orientación = "vertical" > 
    
        < TextView
             androide: id = "@ + / Identificación del TV_TITLE" 
            android: texto = "用户名" 
            android: TEXTSIZE = "30SP" 
            android: gravedad = "center_horizontal" 
            android: layout_width =" match_parent"
        fragmento
             androide: id = "@ + ID / conversación" 
            android: nombre = "io.rong.imkit.fragment.ConversationFragment" 
            android: layout_width = "match_parent" 
            android: layout_height = "match_parent"  /> 
    </ LinearLayout >

    2. La última versión de IM parece sólo para obtener la información de identificación y no se puede obtener un nombre de usuario, por lo que la página de lista de mensajes, lo que demuestra que el ID de usuario, y yo quiero mostrar es el nombre de usuario. Esto requiere la modificación de la página de datos de la lista. La necesidad de obtener un nombre de usuario de su propio servidor y luego almacenado en caché en el teléfono, se debe tener en cuenta la situación de los diferentes proyectos. ¿Cuándo se puede consultar uno al otro número de teléfono, volver ID de usuario y el nombre de la otra, no se puede encontrar en el caso de locales, para solicitar sus propios servidores.

    importación android.content.Context;
    importación android.view.View;
    importación android.view.ViewGroup; 
    
    importación io.rong.imkit.model.UIConversation;
    importación io.rong.imkit.userInfoCache.RongUserInfoManager;
    importación io.rong.imkit.widget.adapter.ConversationListAdapter;
    importación io.rong.imlib.model.Conversation;
    importación io.rong.imlib.model.UserInfo; 
    
    público  de clase ConversationListAdapterEx extiende ConversationListAdapter {
         público ConversationListAdapterEx (contexto Contexto) {
             super (contexto); 
        } 
    
        @ Override
        protegida Ver NEWVIEW (contexto Contexto, int posición, grupo ViewGroup) {
             retorno  súper .newView (contexto, la posición del grupo); 
        } 
    
        @ Override 
        protegida  vacío Bindview (Ver v, int posición, los datos UIConversation) {
             si (data.getConversationType () es igual a (Conversation.ConversationType.DISCUSSION).) 
                Data.setUnreadType (UIConversation.UnreadRemindType.REMIND_ONLY); 
            UserInfo userInfo =   RongUserInfoManager.getInstance () getUserInfo (data.getUIConversationTitle ()).;
            si (userInfo! = nula ) { 
                cadena s= UserInfo.toString (); 
                data.setUIConversationTitle (s); 
            } 
            Súper .bindView (v, posición, datos); 
        } 
    }
        @ Override
         pública  vacío getUserIdSuccess (usuario UserBean) { 
            . RongIM.getInstance () startConversation (getContext (), Conversation.ConversationType.PRIVATE, user.getUserId () + "", "悟空" ); 
            UserInfo userInfo = nuevo UserInfo (user.getUserId () + "", user.getUserName (), nula ); 
            . RongUserInfoManager.getInstance () setUserInfo (userInfo); 
        }

     

    Aquí el uso de las herramientas proporcionadas por la memoria caché de usuario de IM :. RongUserInfoManager.getInstance () getUserInfo (data.getUIConversationTitle ()), se requiere después de la exitosa adquisición de información de usuario almacenada localmente.

   

 

Supongo que te gusta

Origin www.cnblogs.com/shunlibest/p/12466907.html
Recomendado
Clasificación