位置消息
IMKit 基于高德地图 SDK 提供了位置消息,实现了应用地图预览功能。
- SDK 默认发送的消息包含位置消息内容对象
LocationMessage
(类型标识:RC:LBSMsg
)。
提示
IMKit 默认会话页面未启用位置功能。如需要使用位置功能,需要自定义位置插件开发。下面提供了示例代码进行参考。

发送位置消息代码示例
通过自定义位置消息插件,在扩展面板里会自动生成位置消息入口。用户点击输入栏右侧 +
号按钮可展开扩展面板,点击位置图标,即可发送位置消息。
示例基于鸿蒙 Map Kit SDK,集成于配置请参照鸿蒙开发文档。
自定义位置插件
LocationPlugin
是提供给开发者借鉴的位置插件示例代码。开发者需要在 sendLocation
方法中编写跳转 LocationPage
的代码。
TypeScript
import { ArrayChecker, ConversationIdentifier } from '@rongcloud/imlib';
import { IBoardPlugin } from '@rongcloud/imkit';
import { PermissionsUtil } from '../../../utils/PermissionsUtil';
import { LocationParams, SelectLocationType } from '../model/LocationParams';
import { common, Permissions } from '@kit.AbilityKit';
/**
* 加号扩展栏的位置插件
* @version 1.0.0
*/
export class LocationPlugin implements IBoardPlugin {
obtainTitle(context: Context): ResourceStr {
return $r("app.string.rc_location");
}
obtainImage(context: Context): ResourceStr {
return $r("app.media.rc_input_bar_plugin_location");
}
onClick(context: Context, conId: ConversationIdentifier): void {
//先检查收否授权地图权限,没有授权的话去设置权限
const permissionArray: Permissions[] = [
'ohos.permission.LOCATION',
'ohos.permission.APPROXIMATELY_LOCATION'
];
PermissionsUtil.checkPermissions(permissionArray)
.then((array: Permissions[]) => {
//已经授权
if (array.length === 0) {
// 发送位置页面
this.sendLocation(conId);
} else {
// 没授权,需要申请权限
PermissionsUtil.requestPermissionsFromUser(getContext(this) as common.UIAbilityContext, permissionArray)
.then((permissions: Array<Permissions>) => {
if (ArrayChecker.isValid(permissions)) {
PermissionsUtil.requestPermissionOnSetting(getContext(this) as common.UIAbilityContext,
permissionArray);
} else {
// 发送位置页面
this.sendLocation(conId);
}
});
}
});
}
/**
* 发送位置页面
*/
private sendLocation(conId: ConversationIdentifier) {
let param: LocationParams = { conId: conId, flag: SelectLocationType.Send }
// 跳转到 LocationPage 页面,携带 LocationParams 参数。
}
onFilter(conId: ConversationIdentifier): boolean {
return true;
}
}