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

标签 android google-cloud-messaging

我正在使用 GCM 云连接服务器实现实时聊天。 我已阅读文档 Upstream messages Using GCM .我学会了如何通过 GCM 将消息上传到我的服务器。众所周知,它比通过 http 将消息发送到网络服务器更可靠,也更好。

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

提前感谢您的帮助。

最佳答案

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

1 - 使用 loopj library通过 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);
...

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

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

此方法必须让您控制上传/下载文件状态(确定、错误、上传、下载等)

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

关于android - 使用 Google Cloud Messaging 云连接服务器 (XMPP) 的上游文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23988415/

相关文章:

Android:如何在没有来自android的请求的情况下将数据从服务器发送到android?

android - 如何从recyclerview获取整数值的总和

java - 将图像及其蒙版与 Android 着色器结合起来?

android - java.lang.classcastException android.content.pm.ResolveInfo

android - com.google.android.gcm.GCMBaseIntentService 在哪里?

java - Android GCM 注册 ID

java - Appium logcat 捕获失败 : spawn ENOENT (no spaces in path)

AlertDialog 中的 Android 选项卡

curl - 使用 GCM 推送通知发布数据

android - GCM 应用程序 ID、实例