LBS功能
Unity3D
概述
接入向导
获取玩家位置信息
获取附近的人
清空位置信息
获取IP信息
Android
概述
接入向导
获取玩家位置信息
获取附近的人
清空位置信息
获取IP信息
IOS
概述
接入向导
获取玩家位置信息
获取附近的人
清空位置信息
获取IP信息
其他
数据结构
系统工具
Crash上报 / Android / 概述

概述

LBS模块可以获取玩家的位置信息,并获取附近的玩家的信息,让玩家可以和自己周边的玩家进行互动。

显示详情

接入向导

Android 3.3.15a 版本开始新增 MSDKLbs.jar,对外接口保持不变,如不需要LBS能力,直接删除MSDKLibrary/libs/MSDKLbs.jar文件即可。

1 前置条件


1) 您已经按初始化模块说明完成 初始化
2) 调用LBS接口需要先登录QQ/微信

2 注册回调

概述

获取附近的人接口WGGetNearbyPersonInfo()和清空自己位置信息接口WGCleanLocation()的结果会通过回调函数OnLocationNofity() 返回给您。获取自己位置信息接口WGGetLocationInfo()的结果通过回调 OnLocationGotNotify() 返回给您。

获取自己位置信息回调

1)功能描述

获取自己位置信息回调

2)接口声明
void OnLocationGotNotify(LocationRet &ret)
3)参数说明
返回值名称 参数类型 说明
ret LocationRet 玩家位置信息类
4)返回值

5)示例代码
virtual void OnLocationGotNotify(LocationRet &locationRet)
    {
        LOGD("OnLocationGotNotify longitude %f", locationRet.longitude);
        LOGD("OnLocationGotNotify latitude %f", locationRet.latitude);
        std::stringstream ss;
        ss << "OnLocationGotNotify";
        // 解决浮点数0.000在demo上显示不完善问题
        if (locationRet.flag == eFlag_Succ)
        {
            ss << " longitude:" << locationRet.longitude << " latitude:" << locationRet.latitude;
        }
        else
        {
            ss << " longitude:" << 0 << " latitude:" << 0;
        }
        displayResult(ss.str());
    }
6)特殊说明

7)名称解释

获取附近的人与清空自己位置信息回调

1)功能描述

获取附近的人与清空自己位置信息回调

2)接口声明
void OnLocationNotify(RelationRet &ret)
3)参数说明
返回值名称 参数类型 说明
ret RelationRet 玩家信息的集合类
4)返回值

5)示例代码
virtual void OnLocationNotify(RelationRet &relationRet)
    {
        LOGD("OnLocationNotify flag %d", relationRet.flag);
        std::stringstream ss;
        ss << "OnLocationNotify";
        ss << " flag:" << relationRet.flag << " friends total:" << relationRet.persons.size();

        switch (relationRet.flag)
        {
            case eFlag_Succ:
            {
                // relationRet.persons.at(0) 中保存的即是个人信息
                for (int i = 0; i < relationRet.persons.size(); i++)
                {
                    std::string city = relationRet.persons.at(i).city;
                    std::string gender = relationRet.persons.at(i).gender;
                    std::string nickName = relationRet.persons.at(i).nickName;
                    std::string openId = relationRet.persons.at(i).openId;
                    std::string pictureLarge = relationRet.persons.at(i).pictureLarge;
                    std::string pictureMiddle = relationRet.persons.at(i).pictureMiddle;
                    std::string pictureSmall = relationRet.persons.at(i).pictureSmall;
                    std::string provice = relationRet.persons.at(i).provice;

                    ss << "\ncity=" << city << "&";
                    ss << "gender=" << gender << "&";
                    ss << "nickName=" << nickName << "&";
                    ss << "openId=" << openId << "&";
                    ss << "pictureLarge=" << pictureLarge << "&";
                    ss << "pictureMiddle=" << pictureMiddle << "&";
                    ss << "pictureSmall=" << pictureSmall << "&";
                    ss << "provice=" << provice << "&";
                }
                break;
            }
            default:
                break;
        }

        displayResult(ss.str());
    }
6)特殊说明

7)名称解释

3 调用lbs接口获取信息

此时您可以调用MSDK接口,获取地理位置信息了,详情参见获取玩家位置信息获取附近的人清空位置信息

恭喜您完成了lbs功能接入工作!

获取玩家位置信息

1 概要说明

获取玩家的地理位置信息:经纬度。

2 注册回调

请参见 注册回调

3 接口调用

1)功能描述

获取玩家的地理位置信息:经纬度。

2)接口声明
bool WGGetLocationInfo();
3)参数说明

4)返回值及回调说明

没有返回值。获取的结果会通过注册并实现回调函数中的OnLocationGotNotify()回调函数,携带LocationRet返回。

5)示例代码
WGPlatform::GetInstance()->WGGetLocationInfo();
6)特殊说明

7)名称解释

获取附近的人

1 概要说明

获取当前玩家附近的玩家信息。

2 注册回调

请参见 注册回调

3 接口调用

1)功能描述

获取当前玩家附近的玩家信息,结果信息通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回。

2)接口声明
void WGGetNearbyPersonInfo();
3)参数说明

4)返回值

没有返回值。获取的结果会通过注册回调中的附近人的信息将通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回给您。

5)代码示例:
WGPlatform::GetInstance()->WGGetNearbyPersonInfo();
6)特殊说明

7)名称解释

RelationRet.flag值表示返回状态, 可能值(eFlag枚举)如下:

eFlag_LbsNeedOpenLocationService: 需要引导用户开启定位服务
eFlag_LbsLocateFail: 定位失败, 可以重试
eFlag_Succ: 获取附近的人成功
eFlag_Error:  定位成功, 但是请求附近的人失败, 可重试

RelationRet.persons是一个Vector, 其中保存了附近玩家的信息 详见常量查询

清空位置信息

1 概要说明

清空位置信息接口可以清除自己的位置信息,当其他玩家获取附近的人时无法获取此玩家的信息。

2 注册回调

请参见 注册回调

3 接口调用

1)功能描述

调用清空位置信息接口可以清除自己的位置信息,当其他玩家获取附近的人时无法获取此玩家的信息,结果信息通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回。

2)接口声明
bool WGCleanLocation();
3)参数说明

4)返回值

没有返回值。获取的结果会通过注册并实现回调函数中的 OnLocationNotify(RelationRet ret)回调函数,携带RelationRet返回。

5)示例代码
WGPlatform::GetInstance()->WGCleanLocation();
6)特殊说明

7)名称解释

RelationRet.flag值表示返回状态, 可能值(eFlag枚举)如下:


eFlag_LbsNeedOpenLocationService: 需要引导用户开启定位服务
eFlag_LbsLocateFail: 定位失败, 可以重试
eFlag_Succ: 清除成功
eFlag_Error: 清除失败, 可重试

获取 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();