文档中心 > AliGenie AR开发者平台

AliGenie AR SDK(iOS)接入文档

更新时间:2018/05/29 访问次数:100464

AliGenie AR SDK提供快速精准的识别、稳定的三维感知与跟踪和超轻量渲染引擎。支持百万级图片识别追踪,SLAM 能够达到亚像素级抖动。目前对外开放的接口基于UIViewController,用户使用方便。

1. AppKey申请

  • 开发者使用淘宝账号登录AR网站 https://open-ar.bot.tmall.com/console/apps, 并创建新应用
    image
    成功后如下
    image

  • 登录淘宝开放平台申请访问AR云服务的权限
    image
    点击应用的appkey, 进入申请AR云服务权限
    image

2. 工程中引入Framework

需要的Framework、静态库和bundle:

  • AIRObjectDetectioniOS.framework
  • AGARCore.framework
  • AivexMagicARiOS.framework
  • opencv2.framework
  • Aivex.bundle
  • AGARCore.bundle
  • liblibpng-Tmall.a
  • liblibjpeg.a

打开工程文件,在App的Build Phases=>Copy Bundle Resources中手动添加Aivex.bundle和AGARCore.bundle

在Build Phases的Link Binary With Libraries中添加上如下图所示依赖:

其中AivexEngineCore.framework在AivexMagicARiOS.framework目录下

在App的Build Setting中添加linker flag, 如下图所示:

3. 修改Info.plist

  • 添加相机权限:在Info.plist中添加名称为NSCameraUsageDescription的Key
  • 添加http访问权限:在Info.plist中添加名称为NSAppTransportSecurity的Dictionary,设置NSAllowsArbitraryLoads为true

4. SDK使用

4.1 设置AppKey和Secret(必需)

为当前App创建一个AGARCoreUIViewcontroller的子类,在该类的viewDidLoad方法中设置第一步申请的appkey,secret等参数,如下所示

- (void)viewDidLoad {
    // IMPORTANT:
    // 注意:这里设置appKey,secret, reqUrlStr必须在[super viewDidLoad]之前调用
   
    self.appKey = xxxx;
    self.secret = xxxx;
    self.reqUrlStr = @"https://eco.taobao.com/router/rest";
  
    [super viewDidLoad];
    
    ....
 }

注意:**当前AGARCoreUIViewcontroller类仅支持Portrait模式**

4.2 开始追踪(必需)

调用API开始或者停止追踪

- (void)viewDidLoad {
    // IMPORTANT:
	 .....
  
    [super viewDidLoad];
    ....
    // 开始追踪, 必须调用
    [self startTracking];
    ....
 }

4.3 设置Focus Region UI(可选实现)

目前默认自带有FocusRegion UI和阿里火眼FocusRegion UI保持一致,如下图所示:

如果用户想要自己设置FocusRegion UI,在viewDidLoad之前设置self.customFocusRegionUI = YES;
创建子view并添加到self.view中,随后设置startX,startY,scanWidth和scanHeight这几个属性,分别表示Focus Region裁剪区域的左上角坐标、宽和高,SDK会根据这个区域裁剪相机数据并做云识别和追踪。例如最简单的使用整屏做云识别和追踪:

self.customFocusRegionUI = YES;
self.startX = 0;
self.startY = 0;
self.scanWidth = self.view.frame.size.width;
self.scanHeight = self.view.frame.size.height;

4.4 追踪成功事件和重扫事件处理(可选实现)

目前SDK还提供了追踪成功事件回调和重扫事件回调, 可根据业务逻辑决定是否需要使用.
用户实现协议AGARCoreDelegate方法:

- (void)onObjectTracked 当识别并追踪到marker后会调用,此时访问属性self.objectId中是marker对应的Id, 注意: 如果需要使用self.objectId, 需要在AGARCoreUIViewcontroller子类的头文件中定义, 如下所示:

#import <AGARCore/AGARCore.h>

@interface ViewController : AGARCoreUIViewController <AGARCoreDelegate>

@property (nonatomic, copy) NSString *objectId;

@end

- (void)onObjectTrackLost 当marker追踪丢失后会调用

- (void)onRescan 重扫回调函数, 用户可以在这个函数中实现自己的UI动画等

- (void)onOpenURL:(NSString *)url 处理如何展示URL内容,如果用户不定义的话,默认调用系统的API[[UIApplication sharedApplication] openURL:urlObj]打开. 注意: 如果用户定义了该函数, 需要自己去调用相关api来打开url, 否则url跳转无效

4.5 检测SDK是否支持当前设备(可选实现)

目前SDK提供了实例方法- (BOOL)arFeatureIsSupported来告知使用方AR功能是否能够在设备上运行, 当返回结果为YES, 调用方法来初始化AGARCoreUIViewcontroller的实例, 否则隐藏或者提示用户设备不支持即可,例如:

// 检测AliGenie AR SDK是否支持当前设备
    if ([agarUtils arFeatureIsSupported]) {
      // 创建AGARCoreUIViewcontroller的子类实例
      
    }else{
      // 弹出AlertView提醒用户不支持该手机
        UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"AGAR SDK"
                                                                       message:@"不支持该手机."
                                                                preferredStyle:UIAlertControllerStyleAlert];
        
        UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                              handler:^(UIAlertAction * action) {}];
        
        [alert addAction:defaultAction];
        [self presentViewController:alert animated:YES completion:nil];
    }

4.6 3D物体追踪

目前SDK中集成了3D物体追踪功能, 可以尝试扫天猫精灵实物体验, 如果您想要追踪定制的3D物体, 请联系我们

5. 其他

因为目前仅支持Portrait模式,所以需要在General=>Deployment Info=>Device Orientation中仅选中Portrait

6. 运行

实例化第四步创建的AGARCoreUIViewController,并调用即可

7. 测试marker

扫描 测试marker
功能体验中的marker

FAQ

关于此文档暂时还没有FAQ
返回
顶部