位置消息
IMKit 基于高德地图 SDK 提供了位置消息,实现了应用内位置共享、位置缩略图与地图预览功能。
- SDK 默认发送的消息包含位置消息内容对象
LocationMessage
(类型标识:RC:LBSMsg
)。 - 实时位置共享也是基于消息实现的。SDK 默认使用类型标识为
RC:RL
、RC:RLStart
、RC:RLJoin
、RC:RLQuit
的消息。
IMKit 默认会话页面未启用位置功能。如需要使用位置功能,可集成 IMKit 位置插件并配置您自己的高德地图 SDK 帐号。
局限
- IMKit 的位置插件目前存在仅支持高德地图 SDK。如需使用其他地图服务,您可以自定义插件,自行构造位置消息并发送。添加自定义插件的方法详见输入区域。
用法
IMKit 从 5.2.3 及之后开始支持 locationKit
插件。如果从低于 5.2.3 的 IMKit 版本升级,请参见下文升级旧版位置插件。
重要
IMKit 5.2.3 - 5.6.6 版本存在已知问题,无法正常发送位置消息。建议您尽快升级到 5.6.7 及之后版本。如果暂时无法升级,可参考知识库文档中的修复方案,详见 解决内置高德地图 ApiKey 失效,导致无法正常发送位置消息的问题。
自行申请高德地图 API Key
IMKit 使用 locationKit
插件发送位置消息时,需要调用高德地图的创建静态图接口,因此您需要申请高德地图申请 Web 服务 API 密钥(Key)。在高德平台创建一个 Web 服务后,可生成 API Key。
集成位置插件
-
集成位置插件库:
本地库文件:从官网下载高德位置相关的库文件。将下载包里
LocationLib
文件夹下的locationKit_<ver>.aar
文件拷贝到项目的libs
目录下,并在应用的build.gradle
中添加依赖。dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
...
}Maven:
// 插件版本需要与主 SDK 版本保持一致。
implementation 'cn.rongcloud.sdk:locationKit:x.y.z'提示各个 SDK 的最新版本号可能不相同,还可能是 x.y.z.h,可前往 融云官网 SDK 下载页面 或 融云的 Maven 代码库 查询。
-
打开应用的
AndroidManifest.xml
文件,把从高德官网获取的 ApiKey 添加到 application 标签的meta-data
里。<meta-data
android:name="com.amap.api.v2.apikey"
android:value="高德地图的 ApiKey" /> -
添加高德隐私协议代码。
集成
locationKit
需要遵守高德地图 隐私合规接口说明,否则会导致应用崩溃。请在您当前应用的隐私协议中添加高德平台隐私政策,在获取用户同意之后,并在第一次调用地图插件功能之前调用以下代码:
// 表示用户同意定位功能隐私协议
AMapLocationClient.updatePrivacyShow(this, true, true);
AMapLocationClient.updatePrivacyAgree(this, true);
// 表示用户同意地图功能隐私协议
MapsInitializer.updatePrivacyShow(this, true, true);
MapsInitializer.updatePrivacyAgree(this, true);
// 表示用户同意搜索功能隐私协议
ServiceSettings.updatePrivacyShow(this, true, true);
ServiceSettings.updatePrivacyAgree(this, true);通过以上步骤,即完成了高德 3D 地图的集成,在扩展面板里会自动生成位置插件。
-
(可选)配置代码混淆。详见混淆。