实现地理位置消息功能

更新时间: 2024/06/03 09:53:09

自 IM UIKit v9.3.0 开始,IM UIKit 的会话消息模块(chatkit-ui)支持地理位置消息功能。

功能介绍

IM UIKit 的默认界面已经实现了地理位置消息的发送按钮、UI 展示和接收逻辑。仅需三步,即可在您的应用实现地理位置消息的收发。

如果您的应用不需要地理位置消息的发送按钮,您也可以将其从界面上移除。

前提条件

开始集成地理位置消息功能前,请确保您已完成以下准备:

实现方法

实现地理位置消息收发

步骤 1:引入依赖

在您的工程的 build.gradle 中添加 locaitonkit 模块的依赖。

groovydependencies {
    implementation("com.netease.yunxin.kit.locationkit:locationkit:${LATEST_VERSION}")

}

步骤 2:配置高德地图服务

地理位置消息功能基于高德地图,因此需要您配置高德地图相关信息。请在您应用的 AndroidManifest.xml 中配置高德地图的 API Key 和定位服务(APSService)。

xml<!-- 高德地图定位 -->
//在您的 applicaion 节点中配置高德地图 API Key 和 APSService
<application android:name=".IMApplication">
    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="apikey" /> // 传入您获取到的高德地图 API Key
    <service android:name="com.amap.api.location.APSService" />
</application>

步骤 3:地理位置消息初始化

在 Application 或者 Activity 中,通过 onCreate 中对地理位置消息进行初始化。

javapublic class IMApplication extends MultiDexApplication {

    @Override
    public void onCreate() {

      // 地图组件初始化,LocationConfig 中包含高德地图 web API 的 key,主要用于发送位置消息调用该服务生成图片来展示,提高页面加载性能
      LocationConfig locationConfig = new LocationConfig();
      locationConfig.aMapWebServerKey = "web API Key ";
      LocationKitClient.init(this, locationConfig);

    }

}

高德地图 Web API 的使用说明,地图插件采用高德地图建议的静态地图,提高在消息聊天页面的加载性能。更多详情,请访问 高德静态地图

初始化完成后,您的应用即可实现地理位置消息功能。

实现按钮移除

会话消息模块(chatkit-ui)也支持移除发送地图位置消息的按钮。

如果您的业务不再需要地图功能,可以在不依赖 LocationKit 的同时,去除发送地图位置消息的按钮。

示例代码

javaChatUIConfig chatUIConfig = new ChatUIConfig();
chatUIConfig.chatInputMenu =
            new IChatInputMenu() {
              @Override
              public List<ActionItem> customizeInputBar(List<ActionItem> actionItemList) {
                //个性化配置输入框下方按钮,actionItemList 传递默认配置的四个按钮:语音、表情、图片和更多。
                //您可以根据自己的需求修改 actionItemList 的数量和顺序,ChatKit-UI 会按照您的返回结果展示。
                return actionItemList;
              }

              @Override
              public List<ActionItem> customizeInputMore(List<ActionItem> actionItemList) {
              //个性化配置更多面板中按钮,actionItemList 传递默认配置的四个按钮:拍摄、文件、位置和音视频通话。
                  for (int index = 0;index < actionItemList.size();index++){
                  //根据 Action 判断按钮是否删除
                      if (TextUtils.equals(actionItemList.get(index).getAction(),
                              ActionConstants.ACTION_TYPE_LOCATION)){
                          actionItemList.remove(index);
                          break;
                      }
                  }
                  return actionItemList;
              }

              @Override
              public boolean onCustomInputClick(Context context, View view, String action) {
                return false;
              }
            };

常见问题

为什么地图没有定位到当前位置?

请按照以下步骤排查问题:

  1. 确认手机已打开定位服务。

  2. 确认应用已授权位置权限。

  3. 确认在日志中是否出现如下类似报错:定位失败, code:7 -->> KEY错误。一般导致该错误的原因为高德地图配置打包机器的 SHA1 和高德控制台配置的 不一致

    将日志上打印出来的 SHA1 配置到高德地图即可解决,更多详情访问 高德开放平台的常见问题

其他高德地图问题

如遇到其他报错,可访问 高德开放平台的错误码列表高德开放平台的常见问题 进行排查。

此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 前提条件
  • 实现方法
  • 实现地理位置消息收发
  • 实现按钮移除
  • 常见问题
  • 为什么地图没有定位到当前位置?
  • 其他高德地图问题