управление подписками изображений pubnub - PullRequest
1 голос
/ 14 апреля 2020

Я реализую приложение чата с функцией отправки изображений с помощью pubnub, я могу опубликовать sh изображения. Но при подписке я получаю ссылку на изображение вместо реального изображения. Я получаю сообщение как JSON объект как '' '{"nameValuePairs": {"imageurl": "example.com"}}

' ''. Как я могу использовать его, чтобы поместить его в ImageView. Вот мой код ( Publi sh обработчик ) '' 'var image = JSONObject () как JSONObject image.put ("imageurl", "example.com")

' '' Сообщение, полученное в обработчике подписки, является объектом json, а не изображением. Почему pubnub не ловит мое изображение с внешнего сервера.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Таким образом, PubNub не будет загружать и перемещать изображение за вас, шина обмена сообщениями PubSub будет перемещать URL-адрес из вашего publi sh подписчикам канала.

В связи с этим я рекомендую реализовать «тип» сообщения, представляющего ваше изображение. Например:

{
        "content": “Hi Team, anyone fancy lunch today?”,
        "type": “Text”,
}

Пример изображения:

{
      "type":"image",
      "thumbnailURL":"https://cdn.image.server/thumbnail",
      "fullURL":"https://cdn.image.server/full"
}

Поскольку вы знаете, что входящее сообщение является изображением типа, вы можете поместить URL-адрес на заводе и загрузить его. путь:

URL url = new URL(pubnubMessage.fullURL);
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);

Надеюсь, это поможет!

1 голос
/ 14 апреля 2020

Вероятно, проще всего использовать библиотеку с именем Glide . Это будет управлять загрузкой и масштабированием изображения для вас. Следуйте инструкциям по настройке, а затем просто после получения URL-адреса изображения используйте следующий пример кода:

Glide
    .with(activity or fragment, etc.)
    .load(urlFromResponse)
    .centerCrop() // If you want to crop it
    .placeholder(R.drawable.loading_spinner) // also optional
    .into(myImageView);
...