Je prends référence sur le site officiel https://quickblox.com/developers/Android#Download_Android_SDK
gradle compile réussi :
repositories {
maven {
url "https://github.com/QuickBlox/quickblox-android-sdk-releases/raw/master/"
}
}
dependencies {
compile "com.quickblox:quickblox-android-sdk-core:2.5.1@aar"
compile("com.quickblox:quickblox-android-sdk-chat:2.5.1@aar") {
transitive=true
}
}
alors j'utilise d'abord le code :
J'avais l'APP_ID...etc.
QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET);
QBSettings.getInstance().setAccountKey(ACCOUNT_KEY);
Deuxième étape : Guide de référence : Démarrer avec l'API de chat https://quickblox.com/developers/Android_XMPP_Chat_Sample#Guide:_Getting_Started_with_Chat_API
//Prepare chat service
QBChatService.setDebugEnabled(true); // enable chat logging
QBChatService.setDefaultPacketReplyTimeout(10000);//set reply timeout in milliseconds for connection's packet.
//Can be used for events like login, join to dialog to increase waiting response time from server if network is slow.
//configure chat socket
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) ;
Il y a un problème que je ne peux pas importer. QBChatService.ConfigurationBuilder
J'essaie donc de changer gradle en compile("com.quickblox:quickblox-android-sdk-chat:2.6.1")
maintenant QBChatService.ConfigurationBuilder peut être importé
Troisième étape : J'effectue la démarche officielle en utilisant le code :
// Initialise Chat service
final QBChatService chatService = QBChatService.getInstance();
final QBUser user = new QBUser("garrysantos", "garrysantospass");
QBAuth.createSession(user, new QBEntityCallback<QBSession>() {
@Override
public void onSuccess(QBSession qbSession, Bundle bundle) {
// success, login to chat
user.setId(qbSession.getUserId());
chatService.login(user, new QBEntityCallback() {
@Override
public void onSuccess(Object o, Bundle bundle) {
}
@Override
public void onError(QBResponseException e) {
}
});
}
@Override
public void onError(QBResponseException e) {
}
});
//To handle different connection states use ConnectionListener:
ConnectionListener connectionListener = new ConnectionListener() {
@Override
public void connected(XMPPConnection xmppConnection) {
}
@Override
public void authenticated(XMPPConnection xmppConnection, boolean b) {
}
@Override
public void connectionClosed() {
}
@Override
public void connectionClosedOnError(Exception e) {
// connection closed on error. It will be established soon
}
@Override
public void reconnectionSuccessful() {
}
@Override
public void reconnectingIn(int i) {
}
@Override
public void reconnectionFailed(Exception e) {
}
};
QBChatService.getInstance().addConnectionListener(connectionListener);
//logOut
boolean isLoggedIn = chatService.isLoggedIn();
if (!isLoggedIn) {
return;
}
chatService.logout(new QBEntityCallback<Void>() {
@Override
public void onSuccess(Void aVoid, Bundle bundle) {
//success
chatService.destroy();
}
@Override
public void onError(QBResponseException e) {
}
});
//By default Android SDK reconnects automatically when connection to server is lost.
//But there is a way to disable this and then manage this manually:
QBChatService.getInstance().setReconnectionAllowed(false);
quand j'utilise l'étape sur QBChatDialog
il ne peut plus être importé à nouveau....
ArrayList<Integer> occupantIdsList = new ArrayList<Integer>();
occupantIdsList.add(34);
occupantIdsList.add(17);
QBChatDialog dialog = new QBChatDialog();
dialog.setName("Chat with Garry and John");
dialog.setPhoto("1786");
dialog.setType(QBDialogType.GROUP);
dialog.setOccupantsIds(occupantIdsList);
//or just use DialogUtils
//for creating PRIVATE dialog
//QBChatDialog dialog = DialogUtils.buildPrivateDialog(recipientId);
//for creating GROUP dialog
QBChatDialog dialog = DialogUtils.buildDialog("Chat with Garry and John", QBDialogType.GROUP, occupantIdsList);
QBRestChatService.createChatDialog(dialog).performAsync(new QBEntityCallback<QBChatDialog>() {
@Override
public void onSuccess(QBChatDialog result, Bundle params) {
}
@Override
public void onError(QBResponseException responseException) {
}
});
J'ai donc essayé de modifier la compilation de gradle compile("com.quickblox:quickblox-android-sdk-chat:3.3.0")
maintenant QBChatDialog
peuvent être importés.
mais il y a d'autres problèmes...
Can't not resolve symbol 'QBSettings' and 'QBSession'
Je suis en colère maintenant, tu te moques de moi ?
Pourquoi le pas officiel me trompe-t-il pas à pas ?
Je suis fatigué... que dois-je faire ?
Quelqu'un peut me sauver s'il vous plaît, toute aide serait appréciée !
Selon @Jagapathi, j'ai mis à jour mon code, le problème suivant est que je ne peux pas me connecter.
Mon toast affiche une erreur de connexion lorsque je clique sur le bouton de connexion :
private void setupQuickBlox() {
QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET);
QBSettings.getInstance().setAccountKey(ACCOUNT_KEY);
QBSettings.getInstance().setAutoCreateSession(true);
//login to quickblox
String enterAccount = editAccount.getText().toString();
String enterPassword = editPassword.getText().toString();
Log.d(TAG,enterAccount);
Log.d(TAG,enterPassword);
final QBUser user = new QBUser(enterAccount, enterPassword);
//login
QBUsers.signIn(user).performAsync(new QBEntityCallback<QBUser>() {
@Override
public void onSuccess(QBUser qbUser, Bundle bundle) {
SharedPreferences.Editor s = getSharedPreferences("QBid", 0).edit();
s.putString("id", user.getId().toString());
s.apply();
Log.d(TAG,user.getId().toString());
Toast.makeText(MainActivity.this, "Login success with quickblox", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(QBResponseException e) {
Toast.makeText(MainActivity.this, "Login error", Toast.LENGTH_SHORT).show();
}
});
}
Le code est sous mon onCreat, donc il montre une erreur de connexion quand je lance l'application bien sûr, mais quand j'entre le compte et le mot de passe, il montre toujours une erreur de connexion, pourquoi ? J'ai vérifié le journal, je peux voir le compte et le mot de passe que j'ai tapé, mais je ne peux pas voir user.getId().toString()
sur mon journal, quelle étape est incorrecte ? J'ai vérifié que le compte est correct :
Voici ma clé :
static final String APP_ID = "50427";
static final String AUTH_KEY = "naMGFKMshdLC3s4";
static final String AUTH_SECRET = "GP8ey4GsQXt2TGu";
static final String ACCOUNT_KEY = "dHYgix3we3bxxsvMqyuR";
Voici la clé de mon compte de test :
Mon bouton surClcik :
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setupQuickBlox();
}
});