Message Content

Last Updated on : 2025-01-06 07:14:08download

This topic describes how to manage message content.

Query messages of a specific type

When updating messages, get a list of messages of a specific type.

fun requestMessageListByType(
        offset: Int,
        limit: Int,
        msgType: MessageType,
        callback: IThingDataCallback<MessageListBean>?
    )

Parameter description

Parameter Type Description
offset Int The start position for getting messages.
limit Int The number of messages returned per page.
msgType MessageType The type of message to be obtained.
callback IThingDataCallback<MessageListBean> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().requestMessageListByType(10, 20, MSG_REPORT, new IThingDataCallback<MessageListBean>() {
    @Override
    public void onSuccess(MessageListBean result) {
        mBeanResult.t.postValue(change(msgType, result, null));
        mBeanResult.networkState.postValue(NetworkState.SUCCESS);
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        mBeanResult.networkState.postValue(NetworkState.falied(errorCode,
                errorMessage));
    }
})

Query message details

fun getMsgListBySrcIdSplitEncryptImageKey(
        offset: Int,
        limit: Int,
        msgType: Int,
        msgSrcId: String?,
        encryptImage: Boolean,
        splitImageKey: Boolean,
        callback: IThingDataCallback<MessageListBean>?
    )

Parameter description

Parameter Type Description
offset Int The start position for getting messages.
limit Int The number of messages returned per page.
msgType Int The type of message to be obtained.
msgSrcId String The unique identifier for the message group.
encryptImage Boolean Specifies whether to encrypt the image.
splitImageKey Boolean Specifies whether the decryption interface needs to be called.
callback IThingDataCallback<MessageListBean> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().getMsgListBySrcIdSplitEncryptImageKey(0, 0, 0, "id", true, true, 
         mMessageCore.requestMessageListByType(offset, limit, type, new IThingDataCallback<MessageListBean>() {
            @Override
            public void onSuccess(MessageListBean result) {
                mBeanResult.t.postValue(change(msgType, result, null));
                mBeanResult.networkState.postValue(NetworkState.SUCCESS);
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
                mBeanResult.networkState.postValue(NetworkState.failed(errorCode, errorMessage));
            }
        });
)

Query whether there is a new message

fun requestMessageNew(callback: IThingDataCallback<MessageHasNew?>?)

Parameter description

Parameter Type Description
callback IThingDataCallback<MessageListBean> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().requestMessageNew(object : IThingDataCallback<MessageHasNew?> {
    override fun onSuccess(messageHasNew: MessageHasNew?) {
        if (messageHasNew != null) {
            val hasNew = (messageHasNew.isAlarm || messageHasNew.isFamily || messageHasNew.isNotification)
            ThingSecurityPreferenceGlobalUtil.set(
                PreferencesContants.MESSAGE_ALARM_HAS_NEW,
                messageHasNew.isAlarm
            )
            ThingSecurityPreferenceGlobalUtil.set(
                PreferencesContants.MESSAGE_FAMILY_HAS_NEW,
                messageHasNew.isFamily
            )
            ThingSecurityPreferenceGlobalUtil.set(
                PreferencesContants.MESSAGE_NOTIFICATION_HAS_NEW,
                messageHasNew.isNotification
            )
            resultSuccess(WHAT_REFRESH, hasNew)
        }
    }

    override fun onError(errorCode: String?, errorMessage: String?) {

    }
})

Mark a message as read

fun readMessageByIds(
        msgType: Int,
        msgSrcId: String?,
        callback: IThingDataCallback<Boolean>?
    )

Parameter description

Parameter Type Description
msgType Int The type of message to be obtained.
msgSrcId String The unique identifier for the message group.
callback IThingDataCallback<MessageListBean> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().readMessageByIds(0, "msgSrcId", object : IThingDataCallback<Boolean> {
                override fun onSuccess(result: Boolean?) {
                }

                override fun onError(errorCode: String?, errorMessage: String?) {
                }
            })

Delete messages

fun deleteMessageByIds(
        msgType: Int,
        idList: List<String>?,
        msgSrcIdList: List<String>?,
        callback: IBooleanCallback?
    )

Parameter description

Parameter Type Description
msgType Int The type of message to be obtained.
idList List<String> The list of IDs for the messages to be deleted.
msgSrcIdList List<String> The list of source IDs for the messages to be deleted.
callback IThingDataCallback<MessageListBean> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().deleteMessageByIds(0, "id1,id2,id3", "srcId1,srcId2,srcId3", new IBooleanCallback() {
    @Override
    public void onSuccess() {
        mDeleteBeanLiveData.networkState.postValue(NetworkState.SUCCESS);
        mDeleteBeanLiveData.t.postValue(true);
    }

    @Override
    public void onError(String code, String error) {
        mDeleteBeanLiveData.networkState.postValue(NetworkState.failed(code, error));
    }
})

Get the secret key for encrypted messages

fun getMessageEncryptImageKeyList(
        requestList: List<MessageEncryptImageKeyRequest>,
        callback: IThingDataCallback<List<MessageEncryptImageKeyBean>>
    )

Parameter description

Parameter Type Description
requestList List<MessageEncryptImageKeyRequest> A list of requests to get the key used to encrypt the image.
callback IThingDataCallback<List<MessageEncryptImageKeyBean>> The result callback.

Example

PersonalMessageCore.newThingSmartMessageCore().getMessageEncryptImageKeyList(requestList,
    new IThingDataCallback<List<MessageEncryptImageKeyBean>>() {
        @Override
        public void onSuccess(List<MessageEncryptImageKeyBean> keyBeans) {
            mBeanResult.t.postValue(change(0, result, keyBeans));
            mBeanResult.networkState.postValue(NetworkState.SUCCESS);
        }

        @Override
        public void onError(String errorCode, String errorMessage) {
            mBeanResult.t.postValue(change(0, result, null));
            mBeanResult.networkState.postValue(NetworkState.SUCCESS);
        }
    })