正在上传图片(0/1)

【iOS】PlaybackDemo教程和dev.dji.com网站的一些问题

 0
手机看帖 3 5231
DJI团队和论坛的开发者朋友们,大家好!我是一名新手iOS开发者,正基于DJI Mobile SDK L2和Phantom3Adv开发App。
在此分享一下今天遇到的一系列坑,供大家参考。DJI团队可以把此文看作一个用户使用报告,作为优化 Mobile SDK 和 Dev 网站的根据,辛苦了。
文末会附上一些未能解决的问题,虚心向大家请教解决方案

问题源始:
在学习 DJI 官方教程里的“创建照片和视频回放App”部分时,我发现自己的 App 只能实现拍照 Capture 和录像 Record 功能,一旦切换到回放模式 Playback,屏幕上的视频流就会中断,只在屏幕上留下黑白的视频流的最后一帧画面…无法像教程里那样神奇地显示出上一张照片(但是可以确定进入了 Playback 模式)。我想,之所以Capture和Record可以显示画面,是因为这里显示的是实时取景的画面,教程已经针对这一需求实现了视频流解码的功能,只要先给 VideoPreviewer 设置显示用的 view,然后调用 start 开启解码线,再将视频数据push到 dataQueue 中,视频数据即开始进行解析并显示。
而Playback模式应该并未使用这个视频预览组件。根据MVC设计模式,app接收了遥控器传回的照片后,应该有一个view去显示个照片,不过我从代码里并未发现这个view…
于是我从GitHub里clone了官方的PlaybackDemo项目,想看看官方教程的运行效果。然后遇到了一个问题:
代码里的AppKey是空值,因此App无法注册激活成功。

于是我去DJI开发者网站的创建App页面,打算根据官方Demo的名字和BundleID创建一个同名的L2级别App,再把AppKey填进代码运行。然后遇到一个问题:
Mac 上的 Chrome 和 QQ Browser 均无法登录 dev.dji.com(输入账号密码后点击登录按钮,页面没反应)…而 Safari 因为有之前的 cookie 自动登录了,可是进入该页面后,点击左侧的选项卡,右侧均无内容显示出来。(更早之前我创建过自己的App,网站登录、AppKey生成和使用均无问题)

于是我把家里的老古董 Windows PC 请了出来,用IE访问——IE弹框提示dev.dji.com的证书过期了,我选择了依旧浏览,这才登录成功并申请到了相应的AppKey。(或许这是之前使用其他浏览器无法登录的原因?因为证书过期而访问失败?)然后我按计划把这个AppKey放在了代码里,再次运行,结果又出现了问题:
- appManagerDidRegisterWithError返回了错误(代码-14),查询.h文件发现意思是“RegisterErrorInvalidMetaData”,(相同的-14错误代码,官方教程里却说是“Server parsing activation data failed”,不知应该以哪个为准)

我猜可能是创建AppKey时某个选项选错了,于是检查了好几遍BundleID和App名称,连大小写都对上了,想来应该不是拼写错误。于是我又按照相同的方法和名字申请了另一个L1级的App,得到了一个不同的AppKey,然后输入代码里再次运行——结果仍然是错误代码-14
附上App控制台的错误信息:NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9814)
(后来发现即使是自己之前注册成功的app也会显示这个消息…好乱)

我感觉我浪费了两个App的名额,想着既然没有激活成功,那么干脆就把它俩删掉吧。结果问题来了:
AppKey无法删除!! T TMac的Chrome进入删除AppKey的页面,打开console,在页面上点击“删除”并“确认”,发现报错:
(XMLHttpRequest cannot load https://dev.dji.com/api/web/apps/22040. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://developer.dji.com' is therefore not allowed access. The response had HTTP status code 404.)

踩完了这一系列坑,我觉得,这个可能确实是DJI服务器的问题,不是我的问题…回到最初的问题,即Playback模式无法显示照片的问题,依旧没有解决。
------------ 分割线 ------------
接下来我准备再读读PlaybackDemo的代码来看看自己是哪儿出了问题。若有收获将回帖更新。
总结一下悬而未决的问题,希望能得到大家指教:
1、按官方教程实现的Playback模式无法显示照片(可以进入Playback模式但显示的是之前实时取景画面的最后一帧);有没有朋友和我一样遇到了这个问题?
2、iPad需要连接遥控器才能使用app,但这样就没法连接电脑调试了,大家有什么进行
远程调试的解决方案?(是否有可能让Mac和遥控器相连,用模拟器直接和遥控器进行通讯?)
3、SDK文档和教程冲突,应以哪个为准?

评论
上传
你需要登录之后才能回帖    登录 | 注册
楼主  Phantom 3 Advanced认证用户 2015-9-6 推荐
DJI-XCJ 发表于 2015-9-6 09:57
关于2)mac系统提供与开发设备wifi调试的功能,您可以查阅相关的内容。

3)就目前而言先按教程的走吧,我们 ...
谢谢回复!
关于Mac上Xcode的Wireless Debugging,我查了很多资料,如果您说的是Xcode4.2,那时确实是支持的,但后来由于安全性问题,Apple在Xcode的后续版本里把这个功能取消了。
我现在采取的办法是在设备上做一个可以上下滚动的UITextView,专用于输出log。用着还算凑合。
现在的问题是,若用模拟器,则无法连接飞机遥控器去测试功能;若用真机连接遥控器调试,又无法在Xcode里下断点Debug…纠结的很。
但我发现教程里很多log信息都是直接用NSLog()输出的,可是若iDevice不连线至Mac的话,NSLog()是无法输出到Xcode的控制台里的…所以我很疑惑你们教程为什么这么写。
如果贵团队用的是什么高级办法,希望能够指出!谢谢!
DJI-XCJ   2015-9-6 3#
关于2)mac系统提供与开发设备wifi调试的功能,您可以查阅相关的内容。

3)就目前而言先按教程的走吧,我们下一版将会相对完整地更新好SDK文档~
DJI Mobile SDK  Osmo Pocket认证用户 2015-9-6 4#
你好!目前官网iOS PlaybackDemo教程是针对Phantom 3 Professional和Inspire 1机型的,暂不支持Phantom 3 Advanced,我们会尽快完善教程。
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表