辅助功能
用户意见反馈
AbleCloud提供APP端的用户意见反馈接口. 开发者可以开发用户提交意见的页面. 用户意见反馈可以反馈的项由开发者自己定义. 意见反馈需要使用ACFeedBackManager
类以及ACFeedBack
对象, 所以需要在项目相关的类的头部添加如下代码:
#import "ACFeedBack.h"
#import "ACFeedBackManager.h"
使用意见反馈前, 需要先在控制台设置反馈项参数:
目前SDK提供两种类型的意见反馈内容上传: 文字反馈 和 图片反馈
上传文字意见反馈
以图片中的反馈项参数为例, 用户上传了一个修改头像有时候会崩溃的反馈意见, 代码示例如下:
ACFeedBack *feedback = [[ACFeedBack alloc] init];
[feedback addFeedBackWithKey:@"description" value:@"修改头像有时候会崩溃"];
[ACFeedBackManager submitFeedBack:feedback callback:^(BOOL isSuccess, NSError *error) {
if (!error) {
if (isSuccess) {
//TODO...
}
}
}];
相关注意事项如下:
- 使用意见反馈功能之前, 请先去控制台/用户管理/意见反馈收集/反馈项设定中定义对应的意见反馈字段和类型.
- 如果上传意见反馈失败, 请检查接口字段和控制台对应字段名称,类型是否一致
- 默认的用户意见反馈是针对厂商级别的, 如果需要设置针对产品级别的, 可以在示例中添加
feedback.subDomain = @"<subDomain>"
代码- 如果该接口返回错误, 请根据错误信息自行检查,包括网络是否通畅, 参数是否正确等.
上传图片意见反馈
在某些使用场景中, 单靠文字可能不足以描述某一类问题, 这时候就需要用户通过手机截图等方式, 将出现问题的界面作为意见反馈的一部分上传上来. 针对这一需求, SDK支持用户上传图片意见反馈 图片意见反馈支持两种格式图片上传:
URL格式
: 如果开发者将图片存储到自己的后台等其他位置, 可以直接将图片的URL作为参数传进来.UIImage格式
: 如果开发者选择直接上传图片, 那么SDK会默认将图片存储到Ablecloud的云端, 默认的命名如下:
- bucket: feedback
- Name: [NSString stringWithFormat:@"%zd_%@", [ACKeyChain getUserId], [NSUUID UUID].UUIDString];
两种上传模式示例如下, 例如:要反馈的图片URL地址是 www.ablecloud.com/image.png, 对应的反馈字段是: pic:
- 图片URL反馈
ACFeedBack *feedback = [[ACFeedBack alloc] init];
NSString *imageUrl = @"http://www.ablecloud.com/image.png";
[feedback addFeedBackPictureWithKey:@"pictures" value:imageUrl];
[ACFeedBackManager submitFeedBack:feedback callback:^(BOOL isSuccess, NSError *error) {
if (!error) {
if (isSuccess) {
//TODO...
}
}
}];
- NSData格式反馈
ACFeedBack *feedback = [[ACFeedBack alloc] init];
UIImage *image = [UIImage imageNamed:@"imageName.png"];
[feedback addFeedbackPictures:@[image] forKey:@"pic"];
[ACFeedBackManager submitFeedBack:feedback callback:^(BOOL isSuccess, NSError *error) {
if (!error) {
if (isSuccess) {
//TODO...
}
}
}];
相关注意事项如下:
- 使用意见反馈功能之前, 请先去控制台/用户管理/意见反馈收集/反馈项设定中定义对应的意见反馈字段和类型.
- 如果上传意见反馈失败, 请检查接口字段和控制台对应字段名称,类型是否一致
- 默认的用户意见反馈是针对厂商级别的, 如果需要设置针对产品级别的, 可以在示例中添加
feedback.subDomain = @"<subDomain>"
代码- 如果图片是保存在Ablecloud的云端, 请注意图片URL的有效期
- 用户可以选择对图片的压缩, 但是不建议压缩的太狠, 以防在控制台查看的时候有困难
- 如果图片是保存在其他服务器, 等确保上传的url地址正确
- 如果该接口返回错误, 请根据错误信息自行检查,包括网络是否通畅, 参数是否正确等
获取室外天气
SDK中针对空气净化器等项目需求, 提供了获取室外天气情况的接口, 开发者可以直接调用接口获取当前或者历史周期内的PM2.5, AQI(空气质量)以及Weather
开发该功能需要使用ACAccountmanager
类, 所以需要在项目相关的类的头部添加如下代码:
#import "ACWeatherManager.h"
目前SDK支持300多个地区的数据请求, 详情可参考: 获取地区详情
PM2.5
- 获取最近一次测量的PM2.5数据
例如, 获取北京最近一次测量的PM2.5数据
[ACWeatherManager getLatestPM25WithArea:@"北京" callback:^(ACPM25 *pm25, NSError *error) {
if (!error) {
//TODO...
}
}];
相关注意事项如下:
- 如果未获取到PM2.5数值, 请检查传入的地区参数是否是SDK支持的地区, 具体可见:获取地区详情
- 开发者在调用该方法前要检查参数是否为空值, 避免出现传入空值的现象.
- 如果该接口返回错误, 请根据错误信息自行检查, 包括网络是否通畅, 参数是否正确等.
- 获取最近 N 天/小时的PM2.5值 例如, 获取深圳最近10个小时测量的PM2.5数据
[ACWeatherManager getLastHoursPM25WithArea:@"深圳" hours:10 callback:^(NSArray *pm25List, NSError *error) {
if (!error) {
//TODO...
}
}];
[ACWeatherManager getLastDaysPM25WithArea:@"深圳" days:10 callback:^(NSArray *pm25List, NSError *error) {
if (!error) {
//TODO...
}
}];
相关注意事项如下:
- PM2.5数据为每10分钟测量一次.
- 如果未获取到PM2.5数值, 请检查传入的地区参数是否是SDK支持的地区, 具体可见:获取地区详情
- 开发者在调用该方法前要检查参数是否为空值, 避免出现传入空值的现象.
- 该接口最多返回最近24小时/31天的测量数据, 所以建议时间参数不要超过24小时/31天.
- 如果该接口返回错误, 请根据错误信息自行检查, 包括网络是否通畅, 参数是否正确等.
天气/空气质量
天气测量情况和空气质量测量信息的使用方法与PM2.5的使用方法完全一致, 这里就不再赘述了.
排行榜
AbleCloud除了提供丰富的存储管理外,还提供了排行榜的功能需求,能够支持按照不同排行周期进行排行操作。
如下我们以记步排行为例,需求如下: 每天进行实时的记步排名,显示当前所有人的步数及排行(页面显示包含昵称与头像);除此之外,我们还要求进行周统计,以周为单位显示每天的运动步数及排行。
使用排行榜功能需要在相关的类头部添加如下代码:
#import "ACRankingCount.h"
#import "ACRankingValue.h"
#import "ACRankingManager.h"
注:
因为排行榜是一个时间段的数据排行概念, 所以这里说的
时间
指的都是时间段
, 即从某一个时间点开始记录, 到某一个时间点结束. 例如: 从每天的00:00
开始计算, 到当天的23:59
结束.具体以什么时间粒度去结算数据, 需要用户在控制台自己定义.
SDK中使用的时间点, 只要在对应的某一个时间段内均可. 例如按
1 天
为时间粒度查询2016/06/25
的数据, 那么传入的timestamp
只需要在2016/06/25 00:00 ~ 2016/06/25 23:59
之间均可.传入的时间格式均为时间戳, 具体的时间设置在请参考
ACRankingManager.h
中对应的注释中的demo
使用前需先到控制台建立对应的排行榜单
新建排行榜
登录AbleCloud管理平台,选择存储管理-->排行榜-->新建排行榜,如下图所示:
记步的统计周期一般都为每天,所以我们新建以天为统计周期的排行榜。时区我们以北京时间为例,选择东八区。
新建用户拓展属性
登录AbleCloud管理平台,选择用户管理-->附加属性-->新建,如下图所示:
由于我们需要显示所有用户的昵称、头像及排名名次,所以我们要新建用户附加属性,同时设置头像的访问权限为Public。(昵称为用户的基本属性,可以不用新建)
设置当前步数
当打开我们的app之后,我们从设备(手环)/手机获取到今天的步行步数,这时我们需要调用以下接口
//增加或减少当前用户的分值(原有分值进行累加), 详见`ACRankingManager.h`
//timestamp == 0 则表示为当前时间
//假设当前获取到的步数是10000
[ACRankingManager setScore:10000 forName:@"Sports_step" withTimestamp:0 callback:^(NSError *error) {
if (error) {
//插入失败
return;
}
//插入成功
}];
获取所有用户的步数及排名
//timestamp为0代表当前时间,即今天实时的步数排名;startRank与endRank为1和-1,代表从第一名到最后一名;步数是越多排名越靠前,所以我们使用正序排名
[ACRankingManager scanWithName:@"Sports_step"
period:ACRankingPeriodDay
timestamp:0
startRank:1
endRank:-1
order:ACRankingOrderASC
callback:^(NSArray<ACRankingValue *> *list, NSError *error) {
if (error) {
//错误处理
return;
}
//list为`ACRankingValue`的实例对象, 即每一名次的详细信息
}];