位置消息
IMKit 提供了位置插件,实现了发送位置消息、位置缩略图功能。本文还描述了如何自行实现了应用内位置共享。
- SDK 默认发送的消息包含位置消息内容对象 [RCLocationMessage](类型标识:
RC:LBSMsg
)。 - 实时位置共享也是基于消息实现的。SDK 默认使用类型标识为
RC:RL
、RC:RLStart
、RC:RLJoin
、RC:RLQuit
的消息。
局限
- IMKit 的位置插件基于 MapKit。如需使用其他地图服务,您可以自定义插件,自行构造位置消息并发送。添加自定义插件的 方法详见输入区域。
- 位置插件默认仅支持点击发送位置。
用法
IMKit 从 5.2.3 及之后开始支持 LocationKit
插件。如果从低于 5.2.3 的 IMKit 版本升级,请参见下文升级旧版位置插件。
集成位置插件
请根据 IMKit 的导入方式,选择集成 LocationKit
插件的方式。
-
使用 CocoaPods
Framework(要求 SDK ≥ 5.2.3)
rubypod 'RongCloudIM/LocationKit',' x.y.z' #位置插件
源码(要求 IMKit 同为源码,要求 SDK ≥ 5.2.3)
rubypod 'RongCloudOpenSource/LocationKit', 'x.y.z' #位置插件
-
手动集成。如果项目中 IMKit 源码为手动导入,请通过融云官网 SDK 下载页面下载
LocationKit
插件。由于 IMKit 的LocationKit
插件依赖 IMLib SDK 提供的Location
库,您还需要额外添加Location
库。您可以选择通过 CocoaPods 导入Location
Framework,或使用下载包中的RongLocation.xcframework
文件。rubypod 'RongCloudIM/Location',' x.y.z' # IMLib SDK 位置基础库
x.y.z 代表具体版本,请通过融云官网 SDK 下载页面或 CocoaPods 仓库等方式查询最新版本。
发送位置消息
位置插件集成完毕后,在扩展面板里会自动生成位置消息入口。用户点击输入栏右侧 +
号按钮可展开扩展面板,点击位置图标,即可发送位置消息。
集成位置插件后,默认仅支持点击发送位置。
使用实时位置共享
IMKit SDK 没有提供实时位置共享功能插件。您可以参考融云示例应用 SealTalk 中的代码,在您应用中实现实时位置共享。
图中参与位置实时共享人员的用户头像、昵称需要 App 提供给 IMKit,具体方法参考设置用户信息。
下面以 SealTalk 示例应用开源代码为例,说明在单聊会话中实现位置共享的步骤。操作完成后,就可以在单聊会话中使用位置实时共享功能。您也可以参考在 SealTalk 的 RCDChatViewController.m。
-
下载 SealTalk 项目源码,将源码中的
Sections/Chat/RealTimeLocation
导入工程。shellhttps://github.com/rongcloud/sealtalk-ios
-
在会话页面中导入下面头文件。
Objective C#import <objc/runtime.h>
#import "RealTimeLocationEndCell.h"
#import "RealTimeLocationStartCell.h"
#import "RealTimeLocationStatusView.h"
#import "RealTimeLocationViewController.h"
#import "RealTimeLocationDefine.h"
static const char *kRealTimeLocationKey = "kRealTimeLocationKey";
static const char *kRealTimeLocationStatusViewKey = "kRealTimeLocationStatusViewKey";