MsgReportReaded

introduction

Report message read (C2C)

It is acceptable to fill out message with NULL, null string pointer, or "" empty string, and the latest message time (if exist) or the current time is reported as the message read time.

When specifying mesasge, then use the message's timestamp as the message read time. The best approach is to use the original message by requiring message list or message locator in order to avoid reconstruct message Json.

Parameter details

overload1

Parameter name Parameter type Required Description
conv_id string Required Conversation ID
conv_type TIMConvType Required Conversation type
message Message Required Message body
callback NullValueCallback Required Asynchronous callback

overload2

Parameter name Parameter type Required Description
conv_id string Required Conversation ID
conv_type TIMConvType Required Conversation type
message Message Required Message body
callback ValueCallback< string > Required Asynchronous callback The format of json_param in the return value is string

Returned template

TIMResult

The parameters of the callback function after successfully calling the API:
code:int
desc:string
json_param:'' // json_ Params is an empty string ""
user_data:string

Return value details

name type description
TIMResult TIMResult Return value of calling API
code int Result error code: Error Codes
desc string The description of the error.
json_param string Json string. Calling different API will get different Json strings.
user_data string User-defined data transfered by ImSDK without any processing

Code example

using UnityEngine;
using UnityEngine.UI;
using com.tencent.im.unity.demo.types;
using com.tencent.imsdk.unity;
using com.tencent.imsdk.unity.types;
using com.tencent.imsdk.unity.enums;
using System;
using com.tencent.im.unity.demo.utils;
using EasyUI.Toast;
using System.Collections;
using System.Text;
using System.Collections.Generic;
public class MsgReportReaded : MonoBehaviour
{
  string[] Labels = new string[] { "SelectFriendLabel" };
  public Text Header;
  public Dropdown SelectedFriend;
  public Text Result;
  public Button Submit;
  public Button Copy;
  private List<string> FriendList;
  void Start()
  {
    foreach (string label in Labels)
    {
      GameObject.Find(label).GetComponent<Text>().text = Utils.t(label);
    }
    FriendshipGetFriendProfileListSDK();
    Header = GameObject.Find("HeaderText").GetComponent<Text>();
    SelectedFriend = GameObject.Find("Friend").GetComponent<Dropdown>();
    Result = GameObject.Find("ResultText").GetComponent<Text>();
    Submit = GameObject.Find("Submit").GetComponent<Button>();
    Copy = GameObject.Find("Copy").GetComponent<Button>();
    Submit.onClick.AddListener(MsgReportReadedSDK);
    Copy.GetComponentInChildren<Text>().text = Utils.t("Copy");
    Copy.onClick.AddListener(CopyText);
    if (CurrentSceneInfo.info != null)
    {
      Header.text = Utils.IsCn() ? CurrentSceneInfo.info.apiText + " " + CurrentSceneInfo.info.apiName : CurrentSceneInfo.info.apiName;
      Submit.GetComponentInChildren<Text>().text = CurrentSceneInfo.info.apiName;
    }
  }

  void GetFriendList(params object[] parameters)
  {
    try
    {
      FriendList = new List<string>();
      SelectedFriend.ClearOptions();
      string text = (string)parameters[1];
      List<FriendProfile> List = Utils.FromJson<List<FriendProfile>>(text);
      foreach (FriendProfile item in List)
      {
        print(item.friend_profile_identifier);
        FriendList.Add(item.friend_profile_identifier);
        var option = new Dropdown.OptionData();
        option.text = item.friend_profile_identifier;
        SelectedFriend.options.Add(option);
      }
      if (List.Count > 0)
      {
        SelectedFriend.captionText.text = List[SelectedFriend.value].friend_profile_identifier;
      }
      else
      {
        SelectedFriend.captionText.text = "";
      }
    }
    catch (Exception ex)
    {
      Toast.Show(Utils.t("getFriendListFailed"));
    }
  }

  void FriendshipGetFriendProfileListSDK()
  {
    TIMResult res = TencentIMSDK.FriendshipGetFriendProfileList(Utils.addAsyncStringDataToScreen(GetFriendList));
    print($"FriendshipGetFriendProfileListSDK {res}");
  }

  void MsgReportReadedSDK()
  {
    print(FriendList[SelectedFriend.value]);
    // 可以填 NULL 空字符串指针或者""空字符串,此时以会话当前最新消息的时间戳(如果会话存在最新消息)或当前时间为已读时间戳上报.当要指定消息时,则以该指定消息的时间戳为已读时间戳上报,最好用接收新消息获取的消息数组里面的消息Json或者用消息定位符查找到的消息Json,避免重复构造消息
    TIMResult res = TencentIMSDK.MsgReportReaded(FriendList[SelectedFriend.value], TIMConvType.kTIMConv_C2C, null, Utils.addAsyncStringDataToScreen(GetResult));
    Result.text = Utils.SynchronizeResult(res);
  }

  void GetResult(params object[] parameters)
  {
    Result.text += (string)parameters[0];
  }

  void CopyText()
  {
    Utils.Copy(Result.text);
  }
  void OnApplicationQuit()
  {
    TencentIMSDK.Uninit();
  }
}

results matching ""

    No results matching ""