实现类似微博广场功能 所有人都能看到这条状态

你是怎么发送这条 status 的?

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Map data = new HashMap();
List fileList = new ArrayList<>();
for (int i = 1; i < adapter.getCount(); ++i) {
try {
String path = ((CustomGallery)adapter.getItem(i)).sdcardPath;
String filename = getFileName(path);
Bitmap bitmap = BitmapFactory.decodeFile(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BitmapUtils.compressImage(bitmap, baos);
AVFile avFile = new AVFile(filename,baos.toByteArray());
avFile.save();
AVObject fileObj =AVObject.createWithoutData("_FIle", avFile.getObjectId());
fileList.add(fileObj);
} catch (AVException e) {
e.printStackTrace();
}
}
data.put("text", mEditText.getText().toString());
data.put("longitude", mapLocation.getLongitude());
data.put("latitude", mapLocation.getLatitude());
data.put("locationText", mapLocation.getProvince() + mapLocation.getCity());
data.put("images", fileList);
AVStatus status = AVStatus.createStatusWithData(data);
status.setQuery(AVUser.getQuery());
status.setInboxType("public");

使用createStatusWithData发布的 因为是广场 大家都能看到 并不是发给粉丝 所以没用 sendStatusToFollowersInBackgroud

public void run() {
//AVQuery inboxQuery = new AVQuery("_Status");
AVStatusQuery inboxQuery = AVStatus.inboxQuery(AVUser.getCurrentUser(), "public");
inboxQuery.getMaxId();
inboxQuery.getSinceId();
inboxQuery.setLimit(limit); //设置最多返回50条状态
if (setMaxID) {
// inboxQuery.setMaxId(mMaxId);
} else {
// inboxQuery.setSinceId(0);
}

            try {
                List<AVStatus> parseObjects = inboxQuery.include("source").include("images").find();
                if (parseObjects == null)
                    return;
                for (AVStatus ObjItem : parseObjects) {

这个是获取的

能留个联系方式吗????急啊

看了一下你的代码,是所有人都无法获取到这个通知吗?因为我们任何 Query 都是有结果条数限制的,所以你使用 AVUser.getQuery() 这样来发,也不能发给所有人的。

只是新注册的用户无法获得他注册前的消息

新注册的用户肯定无法获得他注册之前的信息了,因为原来的 status 发送的时候还没有这个 AVUser 对象呢。可以考虑两个解决方案:
1,使用云引擎,在用户注册成功之后,把所有全局的 Status 发到他名下;
2,或者将这种全局的信息不放在 Status 里面,用一张专门的表来存放,展示的时候从这张表获取数据。

也就是说弃用_Status吗 因为我们看到_Status 提供的一些接口还是不错的 例如sinceID maxID

那如果要 实现未注册的用户都能看到呢 好比微博广场那样 或者我想实现可以看到附近的 诸如此类

像微博广场那样的数据,其实不在任何人的 timeline 里面,使用单独的表来存储是最合适的。

我觉得在这方面 LC可以修改下吧 毕竟这种需求还是挺大的 即使是微博 我没关注你或者不是你的粉丝 我也应该可以看到你发的内容的 我觉得你们这种设计更像是朋友圈的概念 必须是好友才能看到 不过又有不同点 毕竟朋友圈我加了你为好友 你历史的发过的状态我也是应该能看到的 感觉LC目前设计的应用内社交 太过于局限了 希望以后能再这方面有更多的扩展 既然是为了方便用户而设计出来的 虽然那些功能自己建表可以实现 但是如果要把粉丝和广场结合的话就这样就会把复杂性交回给用户处理了

btw 还有文档和API有时会让人误解 https://leancloud.cn/docs/status_system.html#自定义Status7
这部分我看自定义status 发送的是自定义状态 查询的是收件箱 AVStatus.INBOX_TYPE.TIMELINE个人理解是不是相当于发送私信给所有人 AVStatus.INBOX_TYPE.PRIVATE发送私信给一个用户

还有匿名用户 会自动在_User表插入一条数据?那这样会产生大量无用数据

匿名用户会在用户注册的时候,自动转变成注册用户,所以基本上会让你的 User 表大小等同于实际的用户规模(包括注册与非注册用户)。

嗯,是这样的,发送自定义状态基本上就等同于往任意用户的某种类型的信箱里面投递状态,然后每个用户都可以打开自己的信箱收到别人希望他看到的状态。
所以基本上你这个需求,对于未注册用户,使用我们的「匿名用户」来做,是比较合适的。