我正在开发一个用于聊天的 Android 应用程序,我正在使用 Quickblox 进行相同的开发。我在我的 android 应用程序中为 QuickBlox SDK 1.2.4 集成了 QuickBlox“quickblox-android-1.2.4.jar”库。我读过this , this以及QB的许多其他链接教程。代码完全按照我的意愿运行,但是当我使用 Proguard QBChatService.getInstance().loginWithUser 不起作用时出现问题。我的代码是:
QBChatService.getInstance().loginWithUser(user,
new SessionCallback() {
@Override
public void onLoginSuccess() {
Log.i("success when login", "success:");
}
@Override
public void onLoginError(String error) {
Log.i("Error", "Error: " + error);
}
});
但是它既不打印登录时成功也不打印错误。不知道为什么?如果我删除 Proguard 并在我的其他演示应用程序中运行它,这将完全正常运行。所以唯一可能的原因可能是 Proguard。您能否通过提及要保留在我的“proguard-project.txt”中的类来帮助我解决这个问题(如果是这样的话)。
我已经提到了下面的类:
#QuickBlox
-keep class org.jivesoftware.smack.initializer.VmArgInitializer { public *; }
-keep class org.jivesoftware.smack.ReconnectionManager { public *; }
-keep class com.quickblox.module.c.a.c { public *; }
-keep class com.quickblox.module.chat.QBChatService { public *; }
-keep class com.quickblox.module.chat.QBChatService.loginWithUser { public *; }
-keep class com.quickblox.module.chat.listeners.SessionCallback { public *; }
-keep class * extends org.jivesoftware.smack { public *; }
在登录之前,我显然已经为 QBAuth.createSession 编写了代码,并且如前所述成功运行 here .所以事实并非如此。
如果我在这里遗漏了什么,请给我建议。 提前致谢。
最佳答案
我有类似的问题,我需要将我的 proguard 配置扩展为以下内容,现在它正在为我工作:
-keep class org.jivesoftware.smack.** { public *; }
-keep class org.jivesoftware.smackx.** { public *; }
-keep class com.quickblox.** { public *; }
-keep class * extends org.jivesoftware.smack { public *; }
-keep class * implements org.jivesoftware.smack.debugger.SmackDebugger { public *; }
关于android - 在 QuickBlox for Android 应用程序中登录聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158541/