2

我一直在尝试为 iOS 和 Android 制作一个简单的即时消息应用程序。全部在 iOS 上完成。不过,我在 Android 上被困在一件事上。

每当我发送消息时,它都会发送带有两个对象senderother. Sender 是消息的发送者,other 是接收消息的人。

在 iOS 上,它给出sender当前登录用户的用户名。与 相同other,但它给出了接收消息的人的用户名。在Android上,目前,我只能得到它来给出当前登录用户sender的用户other,并设置为接收消息的人的用户ID。我想让 Android 设置other为用户名。

我对 Java 和 Android 应用程序开发非常陌生。我对 Swift 和 iOS 开发了解更多。不过,我很确定,这样做需要一个查询。

有人可以告诉我如何做到这一点吗?非常感谢!

代码: Pastebin #1 Pastebin #2 StackOverflow 不允许我添加另一个链接。如果有人想看,我可以将其粘贴在回复中。

ps对不起,如果这没有太多意义。我真的不知道如何描述它。

4

3 回答 3

0

也许不是最清楚的,但是如果您查看 ios 教程,您会使用用户名启动 sinch 客户端,而不是解析用户 ID

[initSinchClient:self.usernameField.text];

但是在 android 应用程序中,您使用 parse userid 启动它

currentUserId = ParseUser.getCurrentUser().getObjectId();
        currentUserName = ParseUser.getCurrentUser().getUsername();

        if (currentUserId != null && !isSinchClientStarted()) {
            startSinchClient(currentUserId); //change this 
        }

尝试将其更改为 startSinchClient(currentUserName);

于 2015-07-15T11:51:22.680 回答
0

在不了解 sinch 的情况下(看起来您正在使用此服务进行消息传递?),我可以看到other在创建时通过额外的意图设置变量MessagingActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        Intent intent = getIntent();
       // recipientId = intent.getStringExtra("RECIPIENT_ID");
        other = intent.getStringExtra("OTHER"); 
        ...

    };

我将查看您在调用 MessagingActivity 意图的任何活动中添加到意图的额外内容(名为“OTHER”)。

于 2015-07-15T00:00:44.260 回答
0

如果你想从他的 userId 中获取接收者的用户名,你应该进行 Parse Query:

尝试以下操作:

String receiverName = null;
List<ParseUser> users = null;
try {
ParseQuery<ParseUser> userQuery = ParseUser.getQuery();
userQuery.whereEqualTo("objectId", other);
users = userQuery.find();
} catch (ParseException e) {
  e.printStackTrace();
}
if( users != null && users.size() >= 1)
{receiverName = users.get(0).getUsername();}
于 2015-07-16T13:53:45.727 回答