使用Google Cloud Messaging云连接服务器(XMPP)的上游文件

Nir*_*iya 6 android google-cloud-messaging

我正在使用GCM云连接服务器实现实时聊天.我已经阅读了使用GCM的文档上游消息.我学会了如何通过GCM向我的服务器上传消息.我们都知道并且比通过http向网络服务器发送消息更可靠.

但现在我也想在聊天中上传文件.但问题是GCM只允许上游最大4KB的消息.我可以使用webservices或FTP将文件上传到服务器,然后通过GCM将文件名传递给服务器.但我想要更合适的解决方案.有没有办法通过GCM云连接服务器来做到这一点.

我在这里先向您的帮助表示感谢.

ifl*_*rit 0

我在这种情况下使用的解决方案是:

1 - 使用loopj库通过POST将文件发送到我的服务器(php p.ex)

// loopj supports Http Auth, cookies, params, multipart files, etc. So is a good solution. Like:

...     
AsyncHttpClient client = new AsyncHttpClient();
client.addHeader("Authorization", "Basic " + Base64.encodeToString("aaa:bbb".getBytes(), Base64.NO_WRAP));

RequestParams params = new RequestParams();
params.put("cmd", "upp");
params.put("uid", Long.toString(getUser().getId()));
params.put("tid", Long.toString(getUser().getIdTeam()));
try{
  params.put("avatar", file); // File object
}catch(FileNotFoundException e){
  ...
}

SharePhotoHandler handler=new SharePhotoHandler(mContext,file,notificate);
client.post(URI_BASE, params, handler);
...
Run Code Online (Sandbox Code Playgroud)

我使用自定义处理程序来控制应用程序可以控制的文件上传(SharePhotoHandler.class)

  • 成功时
  • 失败时
  • 完成时
  • ...

这个方法必须让你控制上传/下载文件的状态(正常,错误,上传,下载等)

文件上传后,服务器必须通知其他客户端有新文件要下载,或者在“onSuccess”方法上向其他客户端发送 GCM 消息。就我而言,服务器将文件名(+URL)发送给其他客户端以供下载。