辅助功能

用户意见反馈

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...
            }
        }
    }];

相关注意事项如下:

  1. 使用意见反馈功能之前, 请先去控制台/用户管理/意见反馈收集/反馈项设定中定义对应的意见反馈字段和类型.
  2. 如果上传意见反馈失败, 请检查接口字段和控制台对应字段名称,类型是否一致
  3. 默认的用户意见反馈是针对厂商级别的, 如果需要设置针对产品级别的, 可以在示例中添加feedback.subDomain = @"<subDomain>"代码
  4. 如果该接口返回错误, 请根据错误信息自行检查,包括网络是否通畅, 参数是否正确等.

上传图片意见反馈

在某些使用场景中, 单靠文字可能不足以描述某一类问题, 这时候就需要用户通过手机截图等方式, 将出现问题的界面作为意见反馈的一部分上传上来. 针对这一需求, SDK支持用户上传图片意见反馈 图片意见反馈支持两种格式图片上传:

  • URL格式: 如果开发者将图片存储到自己的后台等其他位置, 可以直接将图片的URL作为参数传进来.
  • UIImage格式: 如果开发者选择直接上传图片, 那么SDK会默认将图片存储到Ablecloud的云端, 默认的命名如下:
  1. bucket: feedback
  2. Name: [NSString stringWithFormat:@"%zd_%@", [ACKeyChain getUserId], [NSUUID UUID].UUIDString];

两种上传模式示例如下, 例如:要反馈的图片URL地址是 www.ablecloud.cn/image.png, 对应的反馈字段是: pic:

  • 图片URL反馈
    ACFeedBack *feedback = [[ACFeedBack alloc] init];
    NSString *imageUrl = @"http://www.ablecloud.cn/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...
            }
        }
    }];

相关注意事项如下:

  1. 使用意见反馈功能之前, 请先去控制台/用户管理/意见反馈收集/反馈项设定中定义对应的意见反馈字段和类型.
  2. 如果上传意见反馈失败, 请检查接口字段和控制台对应字段名称,类型是否一致
  3. 默认的用户意见反馈是针对厂商级别的, 如果需要设置针对产品级别的, 可以在示例中添加feedback.subDomain = @"<subDomain>"代码
  4. 如果图片是保存在Ablecloud的云端, 请注意图片URL的有效期
  5. 用户可以选择对图片的压缩, 但是不建议压缩的太狠, 以防在控制台查看的时候有困难
  6. 如果图片是保存在其他服务器, 等确保上传的url地址正确
  7. 如果该接口返回错误, 请根据错误信息自行检查,包括网络是否通畅, 参数是否正确等

获取室外天气

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...
        }
    }];

相关注意事项如下:

  1. 如果未获取到PM2.5数值, 请检查传入的地区参数是否是SDK支持的地区, 具体可见:获取地区详情
  2. 开发者在调用该方法前要检查参数是否为空值, 避免出现传入空值的现象.
  3. 如果该接口返回错误, 请根据错误信息自行检查, 包括网络是否通畅, 参数是否正确等.
  • 获取最近 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...
        }
    }];


相关注意事项如下:

  1. PM2.5数据为每10分钟测量一次.
  2. 如果未获取到PM2.5数值, 请检查传入的地区参数是否是SDK支持的地区, 具体可见:获取地区详情
  3. 开发者在调用该方法前要检查参数是否为空值, 避免出现传入空值的现象.
  4. 该接口最多返回最近24小时/31天的测量数据, 所以建议时间参数不要超过24小时/31天.
  5. 如果该接口返回错误, 请根据错误信息自行检查, 包括网络是否通畅, 参数是否正确等.

天气/空气质量

天气测量情况和空气质量测量信息的使用方法与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管理平台,选择存储管理-->排行榜-->新建排行榜,如下图所示:

sport_ranking

记步的统计周期一般都为每天,所以我们新建以天为统计周期的排行榜。时区我们以北京时间为例,选择东八区。

新建用户拓展属性

登录AbleCloud管理平台,选择用户管理-->附加属性-->新建,如下图所示:

sport_ranking

由于我们需要显示所有用户的昵称、头像及排名名次,所以我们要新建用户附加属性,同时设置头像的访问权限为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`的实例对象, 即每一名次的详细信息
                          }];