# 获取附近的人

# 1.启动泛舟服务

# (1)初始化UbiboatManager类

创建UbiboatManager对象

UbiboatManager *ubiboatManager = NULL;
ubiboatManager = [UbiboatManager sharedManager];

# (2)初始化Ubiboat

NSString* keyStr = @"123456789abc123456789abc";
NSString* appUserId = @"123456789abc";
[ubiboatManager initWithAppKey:keyStr andWithUserID: appUserId];

参数:

  • keyStr - 泛舟平台申请的秘钥,与创建的APP的bundleID对应。
  • appUserId - 每个应用中用户的唯一id。

# (2)实现代理协议UbNetDelegate

泛舟服务的接口调用后,响应数据通过代理接口返回。开发者通过判断返回类型来获取不同接口的结果。

-(void)ub_onUbiboatResp:(NSMutableDictionary*)dataDic
{
    switch ([[dataDic objectForKey:@"status"] intValue]) {
        case UBiBoatRspMessageStatus:
            //UBiBoat 状态处理
            break;
        case UBiBoatRspMessageGetNear:
            //处理返回附近的人
            break;
        case UBiBoatRspMessageGetDis:
            //处理返回附近某人距离
            break;
        default:
            break;
    }
}

代理接口返回说明

字段 类型 描述
status int 响应状态
msg String 响应消息
type int 响应类型 NEAR:附近的人 DIS:指定距离 STATUS:异常状态

附近的人接口调用返回NearResp示例:

{
	"type": 1,
	"status": 1,
	"msg": "success",
	"nearPerson": [{
		"appUserId": "aa",		
		"distance": 0.8060606060606061,
		"time": "2021-07-02 19:32:36"
	}]
}

  • nearPerson - 返回的附近的人数组
  • appUserId -附近的人的Id
  • distance -相对距离,单位米

查询指定用户id距离接口调用返回DisResp示例:

{
	"type": 0,
	"status": 1,
	"msg": "success",
	"appUserId": "bb",		
	"distance": 1.80,
	"time": "2021-07-02 19:32:36"
}
  • appUserId -指定的用户Id
  • distance -相对距离,单位米

异常返回StatusResp示例:

开发者在回调中收到此消息即可自定义提醒用户开启蓝牙。

{"msg":"蓝牙未打开!","status":4,"type":3}

# (3)启动泛舟服务

如该接口未调用,在调用服务接口时,会自动启动泛舟服务。但第一次的服务请求结果会延时返回。

[ubiboatManager start];

# 2.服务接口

在初始化泛舟服务后,如立即使启动泛舟服务,此时需要的权限可能还未打开,会返回异常信息,需在代理协议中处理。启动成功之后可以调用服务接口,若泛舟服务未启动成功,会启动泛舟服务,并等待启动成功。

# (1)获取附近信息

获取周围指定范围内的信息,在监听器回调返回附近的人的id、与自身的相对距离。

[ubiboatManager getNearPoi:30 type:1];

参数:

  • dis - 范围,单位米,最大100米,最小5米
  • type - NearInfoReq.Type类型。1为APP用户

# (2)获取与指定ID用户的相对距离

开发者调用此接口并传入指定其他用户的唯一ID,即可在监听器获取与该ID的相对距离(米)。

[ubiboatManager getDis:appUserId];

参数: appUserId - 指定用户的唯一id

# 3.停止服务

# (1)停止泛舟服务

[ubiboatManager stop];