概述
LBS模块可以获取玩家的位置信息,并获取附近的玩家的信息,让玩家可以和自己周边的玩家进行互动。
显示详情接入向导
3.3.8版本开始LBS相关功能变更为单独的库 MSDKLbs.framework ,对外接口保持不变,各业务可按需接入。
1 前置条件
1) 您已经按初始化模块说明完成 初始化
2) 调用LBS接口需要先登录QQ/微信
3) 为兼容iOS8系统,需要在info.plist加入NSLocationWhenInUseUsageDescription(string)字段,如下图
2 参考Demo示例
回调设置参考 MSDKDemo/MyObserver.mm 文件的 OnLocationNotify, OnLocationGotWithLocationRet 方法。
接口调用参考 MSDKDemo/LoginSucceedVC.mm 文件的 onClickGetNearbyPeople, onClickClearMyLocation, onClickMyLocationInfo方法。
获取玩家位置信息
注册回调
1)功能描述
获取玩家位置信息接口 WGGetLocationInfo 会将获取到的地理位置信息(经纬度)通过回调 OnLocationGotNotify 返回给游戏。
2)接口声明
void OnLocationGotNotify(LocationRet& locationRet)
3)参数说明
返回值名称 | 类型 | 说明 |
---|---|---|
locationRet | LocationRet类 | 位置信息结构体 |
4)返回值
无
5)示例代码
void MyObserver::OnLocationGotNotify(LocationRet& locationRet)
{
NSString *flag = [NSString stringWithFormat:@"%d",locationRet.flag];
NSString *desc = [NSString stringWithCString:(const char*)locationRet.desc.c_str() encoding:NSUTF8StringEncoding];
NSString *latitudeStr = [NSString stringWithFormat:@"%f",locationRet.latitude];
NSString *longitudeStr = [NSString stringWithFormat:@"%f",locationRet.longitude];
NSMutableDictionary *personInfoDict = [NSMutableDictionary new];
[personInfoDict setObject:flag forKey:@"flag"];
[personInfoDict setObject:desc forKey:@"desc"];
[personInfoDict setObject:latitudeStr forKey:@"latitude"];
[personInfoDict setObject:longitudeStr forKey:@"longitude"];
}
6)特殊说明
无
7)名词解释
无
调用接口
1)功能描述
获取玩家的地理位置信息:经纬度。调用结果回调到 OnLocationGotNotify。
2)接口声明
bool WGGetLocationInfo();
3)参数说明
无
4)返回值
调用正常返回YES,没有登录、appid为空、openid为空返回NO。
5)示例代码
WGPlatform::GetInstance()->WGGetLocationInfo();
6)特殊说明
无
7)名词解释
无
获取附近的人
注册回调
1)功能描述
获取当前玩家附近的玩家信息,结果会通过 OnLocationNotify 回调给游戏。
2)接口声明
void OnLocationNotify(RelationRet &relationRet)
3)参数说明
返回值名称 | 类型 | 说明 |
---|---|---|
relationRet | RelationRet类 | 用户信息结构体 |
4)返回值
无
5)示例代码
void MyObserver::OnLocationNotify(RelationRet &relationRet) {
NSLog(@"location callback");
NSLog(@"count == %lu",relationRet.persons.size());
NSMutableArray *personInfoArr = [NSMutableArray new];
for (int i = 0; i < relationRet.persons.size(); i++)
{
PersonInfo logInfo = relationRet.persons[i];
NSMutableDictionary *personInfoDict = [NSMutableDictionary new];
NSString *nickName = [NSString stringWithCString:(const char*)logInfo.nickName.c_str() encoding:NSUTF8StringEncoding];
NSString *openID = [NSString stringWithCString:(const char*)logInfo.openId.c_str() encoding:NSUTF8StringEncoding];
NSString *gender = [NSString stringWithCString:(const char*)logInfo.gender.c_str() encoding:NSUTF8StringEncoding];
NSString *pictureSmall = [NSString stringWithCString:(const char*)logInfo.pictureSmall.c_str() encoding:NSUTF8StringEncoding];
NSString *pictureMiddle = [NSString stringWithCString:(const char*)logInfo.pictureMiddle.c_str() encoding:NSUTF8StringEncoding];
NSString *pictureLarge = [NSString stringWithCString:(const char*)logInfo.pictureLarge.c_str() encoding:NSUTF8StringEncoding];
NSString *province = [NSString stringWithCString:(const char*)logInfo.provice.c_str() encoding:NSUTF8StringEncoding];
NSString *city = [NSString stringWithCString:(const char*)logInfo.city.c_str() encoding:NSUTF8StringEncoding];
NSString *gpsCity = [NSString stringWithCString:(const char*)logInfo.gpsCity.c_str() encoding:NSUTF8StringEncoding];
NSString *country = [NSString stringWithCString:(const char*)logInfo.country.c_str() encoding:NSUTF8StringEncoding];
}
}
6)特殊说明
无
7)名词解释
无
调用接口
1)功能描述
获取当前玩家附近的同玩此游戏的玩家信息。
2)接口声明
void WGGetNearbyPersonInfo();
3)参数说明
无
4)返回值
无
5)示例代码
WGPlatform::GetInstance()->WGGetNearbyPersonInfo();
6)特殊说明
无
7)名词解释
无
清空位置信息
注册回调
清空位置信息接口 WGCleanLocation 的回调方法和获取附近的人接口一样结果会回调到 OnLocationNotify。具体参考获取附近的人的回调设置。
调用接口
1)功能描述
调用清空位置信息接口可以清除自己的位置信息,当其他玩家获取附近的人时无法获取此玩家的信息。
2)接口声明
bool WGCleanLocation();
3)参数说明
无
4)返回值
调用正常返回YES,没有登录、appid为空、openid为空返回NO。
5)示例代码
WGPlatform::GetInstance()->WGCleanLocation();
6)特殊说明
无
7)名词解释
无
获取 IP 信息
1 概要说明
MSDK 提供了基于用户出口 IP 的位置信息服务,当前可以提供国家、省、市信息,以满足业务需求。说明:如果用户使用 VPN、网络代理、加速器(部分)等场景,MSDK 会获取到对应服务器的 IP 位置信息。详情可参考MSDK IP 获取位置信息服务说明。3.3.271 版本开始新增该接口。
2 注册回调
class MyObserver : public WGPlatformObserver
{
public:
...
// 获取 IP 信息回调
void OnLocationGetIPInfoNotify(GetIPInfoRet& ipInfoRet);
...
};
3 接口调用
WGPlatform::GetInstance()->WGGetIPInfo();