quickbloxAan de slag met quickblox


Opmerkingen

Deze sectie geeft een overzicht van wat quickblox is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen quickblox vermelden en een link naar de gerelateerde onderwerpen bevatten. Omdat de documentatie voor quickblox nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Nieuw chat-dialoogvenster maken (privé)

QBChatDialog dialog = DialogUtils.buildPrivateDialog("USER_ID of other user");
        

        QBRestChatService.createChatDialog(dialog).performAsync(new QBEntityCallback<QBChatDialog>() {
            @Override
            public void onSuccess(QBChatDialog result, Bundle params) {
              //if dialog created successfully
              //result param return all details about that dialog
            }

            @Override
            public void onError(QBResponseException responseException) {
              //error creating dialog 
            }
        });
 

Quickblox Chat Android SDK importeren

Repository toevoegen

repositories {
    maven {
        url "https://github.com/QuickBlox/quickblox-android-sdk-releases/raw/master/"
    }
}
 

Voeg Project Gradle toe voor Chat-functionaliteit

        dependencies {
               compile("com.quickblox:quickblox-android-sdk-chat:2.6.1")
             }
 

Voeg Project Gradle toe voor videofunctionaliteit

dependencies {
compile "com.quickblox:quickblox-android-sdk-videochat-webrtc:2.6.1"
 }
 

Installatie of instellingen

Gedetailleerde instructies voor het instellen of installeren van quickblox.

Ga naar https://admin.quickblox.com en klik bovenaan op 'Registreren' of volg gewoon de link: https://admin.quickblox.com/register .

Inloggen om te chatten

Maak een sessie met gebruiker en log in bij QuickBlox Chat

// Initialise Chat service
QBChatService chatService = QBChatService.getInstance();
 
final QBUser user = new QBUser("garrysantos", "garrysantospass");
QBAuth.createSession(user, new QBEntityCallback<QBSession>() {
    @Override
    public void onSuccess(QBSession session, Bundle params) {
        // success, login to chat
 
        user.setId(session.getUserId());
 
        chatService.login(qbUser, new QBEntityCallback() {
            @Override
            public void onSuccess() {
 
            }
 
            @Override
            public void onError(QBResponseException errors) {
 
            }
        });
    }
 
    @Override
    public void onError(QBResponseException errors) {
 
    }
});
 

Gebruik ConnectionListener om verschillende verbindingsstatussen te verwerken:

ConnectionListener connectionListener = new ConnectionListener() {
    @Override
    public void connected(XMPPConnection connection) {
 
    }
 
    @Override
    public void authenticated(XMPPConnection connection) {
 
    }
 
    @Override
    public void connectionClosed() {
 
    }
 
    @Override
    public void connectionClosedOnError(Exception e) {
        // connection closed on error. It will be established soon
    }
 
    @Override
    public void reconnectingIn(int seconds) {
 
    }
 
    @Override
    public void reconnectionSuccessful() {
 
    }
 
    @Override
    public void reconnectionFailed(Exception e) {
 
    }
};
 
QBChatService.getInstance().addConnectionListener(connectionListener);
 

Chat-service voorbereiden

Ga als volgt te werk om de chatservice te initialiseren:

QBChatService.setDebugEnabled (true); // schakel chat logging in

QBChatService.setDefaultPacketReplyTimeout (10000); // set antwoordtimeout in milliseconden voor het pakket van de verbinding. Kan worden gebruikt voor evenementen zoals inloggen, deelnemen aan dialoogvenster om de wachttijd van de server te verhogen als het netwerk traag is.

Gebruik QBChatService.ConfigurationBuilder om de chat-socket te configureren ;

QBChatService.ConfigurationBuilder chatServiceConfigurationBuilder = new QBChatService.ConfigurationBuilder();
chatServiceConfigurationBuilder.setSocketTimeout(60); //Sets chat socket's read timeout in seconds
chatServiceConfigurationBuilder.setKeepAlive(true); //Sets connection socket's keepAlive option.
chatServiceConfigurationBuilder.setUseTls(true); //Sets the TLS security mode used when making the connection. By default TLS is disabled.
QBChatService.setConfigurationBuilder(chatServiceConfigurationBuilder);
 

Verzoeklijst van dialoogvenster van ingelogde gebruiker

Code voor het ontvangen van chatdialogen van Quickblox-server van ingelogde gebruiker (voorbeeld met lijstweergave)

private void receiveChatList() {
QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder();
requestBuilder.setLimit(100);

QBRestChatService.getChatDialogs(null, requestBuilder).performAsync(
        new QBEntityCallback<ArrayList<QBChatDialog>>() {
            @Override
            public void onSuccess(final ArrayList<QBChatDialog> result, Bundle params) {
                int totalEntries = params.getInt("total_entries");
                Log.wtf("chat",""+result);
                TrumeMsgAdapter adapter=new TrumeMsgAdapter(this,result);
                chatlistView.setAdapter(adapter);
                chatlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        startActivity(new Intent(this,ChatingActivity.class).putExtra("dialog",result.get(position)));
                    }
                });

            }
            @Override
            public void onError(QBResponseException responseException) {

            }
        });
 

}

Adaptercode: -

    public class TrumeMsgAdapter extends BaseAdapter {

private ArrayList<QBChatDialog> chatlist;
private Context context;

public TrumeMsgAdapter(Context c,ArrayList<QBChatDialog> chatlist){
    this.chatlist=chatlist;
    this.context=c;
}
@Override
public int getCount() {
    return chatlist.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View List;
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        List = inflater.inflate(R.layout.trume_msg_adapter, null);
        TextView username=(TextView) List.findViewById(R.id.UserName);
        TextView lastmessage=(TextView)List.findViewById(R.id.lastmessage);
        username.setText(chatlist.get(position).getName());
        lastmessage.setText(chatlist.get(position).getLastMessage());
    } else {
        List = convertView;
        TextView username=(TextView) List.findViewById(R.id.UserName);
        TextView lastmessage=(TextView)List.findViewById(R.id.lastmessage);
        username.setText(chatlist.get(position).getName());
        lastmessage.setText(chatlist.get(position).getLastMessage());
    }

    return List;
}
}