EasyAR在iOS原生上的简单使用
这是本小白第一次写技术类的文章 好慌好慌
公司目前这个项目中有用到ar的需求 所以就去找到了easyar ,但是可能是目前ar发展的还不够完善,所以网上的相关资料并不是很多,更想吐槽的是easyar的技术顾问感觉很水,问题也回答不到点上,动不动就甩个官网的链接给你,社区里的帖子回复的也不是很多,幸好加进了easyar的qq群,里面的人很热心也很厉害,在他们的帮助下我也解决了我自己的需求,现在就写这个文章希望可以帮到和我有一样疑问的同道中人。另外,因为我不会unity3d,所以我都是用的原生解决的。
首先,最基础的配置问题
1.新建一个工程项目,获取bundleID,因为注册的时候需要用到。
点击开发开始注册,图片标注做错了 点击创建应用,在弹出的框中输入项目的bundleID,注意1个key对应一个bundleID,注册好了就不能修改了 ,点击显示就会出现一串key,之后这个key会用到。2.导入项目所需的各种包。
下图中箭头指向的是我在官方demo中拖过来的,也可以直接下载官方sdk获取。接着再导入右边红色框中的包
无话可说3.在build setting中搜bitcode,并且把值改为no
无话可说4.在plist文件中添加相机权限和上网权限,因为在demo中我用到了网络
好了,现在基本的功课做好了,可以开始表演了。
讲一下,官方的demo是将target图片直接放在了项目中,然而肯定与大部分的项目不合。所以我的这个demo实现的是从网络下载一张图片,然后将图片存在本地沙盒文件中,然后加载沙盒中的文件使之成为target图,从而开始扫描配对。
因为我不会c++,所以并没有做太多的改变,直接在官方 demo中修修改改的。
2.show time:
2.1 在appdelegate.h文件中加入一个属性
@property (atomic) bool active;
2.2 导入蓝色阴影部分的文件,我是直接拖的官方demo里的
2.3 将之前获得的key粘贴到这里
2.4 官方demo中扫描成功后是在图片上显示彩色色块,我不想要这个效果,我想实现的是扫描成功后在界面上显示一张图片,所以我在helloar函数中做了一些调整,我让扫描成功或是失败后抛出一个通知,对了,记得在dealloc中撤销通知(这一步好像有些提前了)
2.5 我在主界面加了两个按钮,一个是下载图片的按钮,一个是扫描的按钮,
我天 图片好大 别急 后面还会有几张同样大的 😄2.6 点击下载图片按钮,便会通过链接下载图片,并显示在界面,如下图所示,并且这张图片就是我们的target图
2.7 对于这张图片 我是这样处理的
1.获取本地沙盒文件下的documents文件夹的路径 2.在以上获得的路径下建立一个新的文件夹 叫 ios 3.将图片写入文件当然,你要是不放心图片是否写入成功,可以找到你的测试真机上的对应的沙盒文件去看看 是否写入成功
2.8 到上一步为止,我们已经把网络上下载的图片写入本地沙盒中了,接着我们就要使这张图片成为目标图,在openglview.mm文件的start函数中加载图片,我的方法是遍历沙盒中刚刚建立的ios文件夹,毕竟不会只有一张图片
2.9 到上一步我们的工作就做得差不多了 就可以开始扫描图片了,具体的写法看我的demo中的arviewcontroller.m文件
注意的是,因为我的项目中当时是要和地图配合使用的,当我扫描成功后两秒退回到上个包含地图的界面,但是地图会抽风,一直闪还会黑屏,这应该是相机还在活跃的原因,当时这个bug搞得我相当心烦,幸好没多久就解决了,解决方法如下图
2.10 好了 ,效果就是这样的,顺便夸一下我的达康书记
好了 基本上就是这些步骤了,至少我的脑子中想不起来还有什么需要额外重点介绍的了
虽然功能是实现了,但是图片多了之后每次加载都要等上个几秒钟,虽然时间不久,但是也不爽,因为安卓的就比我稍微快些,不过他们用的是高通的,我是先看的easyar,等我知道他们使用高通后我已经研究了一大半了,不想换了,当然最主要的是高通的都是英文,难度太大,我还是比较心水中文的,但是以后图片多了加载时间一定会影响用户体验的,所以看到这篇文章并且有所研究的请联系我好吗?我需要你的帮助😄
好了 我的第一篇技术文章到此结束🔚
诶呀 忘了放上demo的地址了,幸好可以更新