您好我想使用XMPP在Android中实现聊天应用程序(以避免GCM通知,因为GCM使用请求响应过程).
我使用Smack库和OpenFire服务器完成了70 perc功能.但在完成这些后我才知道了QuickBlox SDK.我完全不知道这一点,但很少有人通过看到这些特征说它是好的api ..
任何人都可以告诉我,这是使用smack for xmpp实现聊天应用程序的正确方法.或者我们有任何其他使用xmpp for android的好api.
我正在开发一个需要多个库的Android应用程序(适用于Facebook,Google Maps v2和Quickblox等),导致方法数量溢出超过64K限制:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Run Code Online (Sandbox Code Playgroud)
由于我不能没有任何这些库,我寻找方法限制bug的解决方案.我发现了一个来自Android开发者的热门博客文章,推荐使用源代码部门.(我正在谈论的博客条目可以在这里找到:http://android-developers.blogspot.com.es/2011/07/custom-class-loading-in-dalvik.html).我一直在尝试这个解决方案但没有成功.
我现在的问题是,最大量的代码不在我的应用程序本身,但在所需的库中,所以我必须在我必须在我的应用程序中加载的不同dex文件中传播这些库.我对Ant的了解非常有限,我想知道的是我应该在build.xml文件中编写什么来使dex复制我想要的每个库:
<!-- Primary dex to include my source code and some libraries. -->
<copy todir="${out.classes.absolute.dir}.1" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
<!-- Secondary dex to include some other libraries. -->
<copy todir="${out.classes.absolute.dir}.2" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)
任何帮助都会得到真正的赞赏.在此先感谢,亲切的问候!
我们有QuickBlox的企业安装(实现XMPP),并希望在我们的QuickBlox服务器安装上为所有用户创建镜像帐户.我们还希望使用已建立在我们系统上的关系(例如,"客户端和提供者")来同步我们系统用户创建的网络.
简而言之,我们希望将限制聊天"对手"的白名单导出为仅限与我们每个用户已拥有关系的用户.如果User1在我们的系统中与User2和User3之间存在关系,而不是 User4到User40,我们希望能够通过QuickBlox API创建白名单,使用QuickBlox API在聊天中强制执行.
编辑:我们不能使用"荣誉系统"白名单.也就是说,强制执行必须是服务器端使用客户端无法规避的方法.出于隐私考虑,用户之间必须存在严格的,不可避免的阻止.
使用案例:
QuickBlox(或XMPP)服务器具有User1到User40(包括).
User1的白名单仅由[User2,User3]组成.
如果User1尝试联系User15,我们希望QuickBlox/XMPP注意User15不在User1的白名单上并阻止该通信,就像User1双向阻止该用户一样.
我在QB的文档中找到了引用XMPP规范文档的地方,并且发现了隐私列表的概念,它们似乎作为黑名单运行:
这些只提供两种黑名单隐私风格:
您可以选择一种被阻止的逻辑(隐私列表).有两种类型:
- 阻止一种方式.您已被阻止,但您可以写入被阻止的用户.
- 阻挡有两种方式.您被阻止,也无法写入被阻止的用户.
我还找到了有关服务器白名单的文档,这些文档似乎在对话框/ jid中运行,而不是用户级别:
添加到白名单的实体可以是RFC 6120中指定的任何格式的JID ......白名单可能会阻止入站通信,出站通信或两者兼有......
还有一些名单,这些名单与白名单很接近,但在我的测试中似乎并不限制任何两个用户之间的通信,这些用户可能不在彼此的名单上.
也就是说,我没有在我的测试应用程序中设置一个名单,并且用户能够创建组和一对一聊天对话框,尽管没有明确接受任何名册请求.在Android文档中,我在名单上发现了以下内容:"[名册]是一个人收到状态更新的用户集合." 我不相信,这不会出现在状态警报之外的任何方式.
是否有建议的方法为每个用户创建一个悲观的白名单,其中只包含允许通信的用户?或者我们被迫创建和维护"逆黑名单",在这里我们自动化隐私列表创建为每个新用户阻止每一个其他用户,然后使用该API,以消除那些与每个用户应该能够沟通?
如果我们必须使用"反黑名单",是否有办法让默认黑名单适用于最初阻止与我们的QuickBlox系统中已有的每个其他用户进行通信的每个新用户?
(同样,我们不能用"荣誉系统"名单.如果客户端必须请求白名单被激活后才能使用它,可以自由地探索和再改活跃的白名单,或者客户端是否可以拒绝使用列表,这不够安全.)
当我的应用程序在后台并收到远程通知时,可能会发生两件事:
我点击推送通知横幅,我的应用程序到达前台并调用didReceiveRemoteNotification.
我从跳板上点击我的应用程序图标,我的应用程序到达前台并且没有调用didReceiveRemoteNotification.
因此,在方案1中,我可以更新应用程序内部未读消息的计数器以响应didReceiveRemoteNotification.在方案2中,我不能.
如何使用Quickblox解决这个问题?
我有一个视频通话应用程序使用最新的Quickblox版本(Quickblox 2.5,Quickblox-WebRTC 2.0),我需要保存在调用文件时流式传输的视频.有一个旧版本的SDK的旧示例,它看起来与当前版本完全不同.
由于Quickblox已经在使用AVCaptureVideoDataOutput,因此在当前的文档中没有任何关于此的内容,我无法启动AVCaptureMovieFileOutout.无论如何将流保存到文件中?
更新:
我设法将视频写入文件.缺少的只是音轨.
import Foundation
class VideoManager : NSObject, AVCaptureVideoDataOutputSampleBufferDelegate {
static let sharedInstance = VideoManager()
var pixelBufferAdaptor: AVAssetWriterInputPixelBufferAdaptor?
var assetWriterInput: AVAssetWriterInput?
var assetWriter: AVAssetWriter?
var frameNumber: Int64 = 0
var qbDelegate: AVCaptureVideoDataOutputSampleBufferDelegate?
func startSavingCaptureToFileWithURL(url: NSURL, capture: QBRTCCameraCapture) {
print("[VideoManager]: startSavingCaptureToFileWithURL")
guard let dataOutput = getVideoCaptureDataOutput(capture) else { return }
frameNumber = 0
qbDelegate = dataOutput.sampleBufferDelegate
dataOutput.setSampleBufferDelegate(self, queue: dataOutput.sampleBufferCallbackQueue)
let outputSettings: [String : AnyObject] = [
AVVideoWidthKey : 720,
AVVideoHeightKey: 1280,
AVVideoCodecKey : AVVideoCodecH264
]
assetWriterInput …Run Code Online (Sandbox Code Playgroud) 我们Wishbook有一个B2B移动应用程序(Android和iPhone),我们正在寻求实现文本和照片通信 - 在用户1对1之间,或从用户到他的买家组.我们热衷于能够尽快加快速度,提供良好支持,成熟的库/服务器以及电池友好的东西.
我们现在在Layer,Applozic,QuickBlox和SendBird之间进行比较.谁用过它们?他们使用什么协议(XMPP/MQTT/custom/other)?使用它的经验 - 稳定的代码库等等?此外 - 我们更喜欢开源和口袋友好的产品.
谢谢,Arvind
我正在尝试使用Quickblox的示例聊天应用程序.
http://quickblox.com/developers/Android_XMPP_Chat_Sample
但我收到此错误"导入vc908无法解决"在这一行:
import vc908.stickerfactory.StickersManager;
Run Code Online (Sandbox Code Playgroud)
我使用过这些库: - quickblox-android-sdk-chat-2.2.6.jar - quickblox-android-sdk-core-2.2.6.jar
还添加了以下内容: - android-support-v7-appcompat - google-play-services_lib - pull-to-refresh
我一直在我们的应用程序中使用QuickBlox进行聊天,并且在登录到ChatService时连接正常.但是,有时当它断开连接并尝试重新连接时,它会抛出此错误,您可以在下面的堆栈跟踪中看到该错误.每次调用ChatService.getInstance.login(用户,回调)方法时,我都要确保实例化一个QBUser对象.
这是这样做的,
final QBUser user = new QBUser();
user.setLogin(username);
user.setPassword(HashLearnNowConstant.QB_PWD);
public void login(final QBUser user, final QBEntityCallback callback){
// Create REST API session
//
QBAuth.createSession(user, new QBEntityCallbackImpl<QBSession>() {
@Override
public void onSuccess(QBSession session, Bundle args) {
user.setId(session.getUserId());
// login to Chat
//
if(!chatService.isLoggedIn()){
loginToChat(user, new QBEntityCallbackImpl() {
@Override
public void onSuccess() {
callback.onSuccess();
}
@Override
public void onError(List errors) {
callback.onError(errors);
Log.i(HashLearnNowConstant.LOG_TAG,"loginToChat error: " + errors.get(0).toString());
}
});
}else{
callback.onSuccess();
}
}
@Override
public void onError(List<String> errors) {
callback.onError(errors);
Log.i(HashLearnNowConstant.LOG_TAG,"createSession …Run Code Online (Sandbox Code Playgroud) 我试图通过Facebook SDK登录Quickblox应用程序但是我得到422错误.
我在Quikblox,Facebook和iOS应用程序中完成了所有需要的工作
我在这里验证了令牌
-(IBAction)test:(id)sender {
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"]
fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
}
else if (result.isCancelled) {
// Handle cancellations
}
else {
if ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"result is:%@",result.token.tokenString);
[QBRequest logInWithSocialProvider:@"facebook" accessToken:result.token.tokenString
accessTokenSecret:nil
successBlock:^(QBResponse *response, QBUUser *user) {
// Login succeded
} errorBlock:^(QBResponse *response) {
// Handle error
}];
}
}
}];
}
Run Code Online (Sandbox Code Playgroud)
我也试过QMServicesManager
[[[QMServicesManager instance]authService]logInWithFacebookSessionToken:[FBSDKAccessToken currentAccessToken].tokenString completion:^(QBResponse *response, QBUUser *userProfile) { …Run Code Online (Sandbox Code Playgroud) 我遵循quick blox给出的指令如下:
从sdk 2.6.1开始添加对特定模块的依赖只需添加:
dependencies
{
compile("com.quickblox:quickblox-android-sdk-chat:2.6.1")
}
Run Code Online (Sandbox Code Playgroud)
SDK模块自动包含传递模块依赖项.
但是,我无法同步gradle文件,因为它显示错误:
Fail to resolve: com.quickblox:quickblox-android-sdk-chat:2.6.1
请帮助我,我无法使用最新版本启动快速blox.