Wikitude Cordova插件用于在基于Cordova的应用程序中创建我们自己的增强现实。但是在添加插件并遵循官方示例后,应用程序失败了,
-
在 android 中,app.wikitudePlugin.isDeviceSupport 失败并显示错误,
Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference
-
在iOS中,应用程序崩溃并显示错误,
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
有什么解决方法吗?如何解决安卓和iOS问题?
Wikitude Cordova插件
Wikitude是一个增强现实引擎。Wikitude Cordova插件是Cordova的增强现实SDK,可将增强现实体验嵌入到基于PhoneGap和Cordova的应用程序中。
注意:本文档适用于com.wikitude.phonegap.wikitudeplugin
v 6.1.0。其他版本未进行测试。
1. 将插件添加到您的应用程序中
打开控制台并转到您的项目目录并运行 cordova 插件 add 命令
$ cordova plugin add https://github.com/Wikitude/wikitude-cordova-plugin.git
这会将插件添加到您的应用程序中。
运行cordova prepare
以使项目准备好根据配置进行构建.xml
2. 输入维基许可证密钥
转到许可证页面并下载您的个人许可证密钥用于Wikitude SDK。
要将Wikitude Cordova插件与特定的许可证密钥一起使用,请使用WikitudePlugin.js第13行中定义的this._sdkKey
属性。
plugins\com.wikitude.phonegap.WikitudePlugin\www\WikitudePlugin.js
3.安卓:处理维基插件错误
在 android 中,app.wikitudePlugin.isDeviceSupport 可能会失败并显示错误,
尝试在空对象引用上调用虚拟方法 'int org.json.JSONArray.length(('
通过在WikitudePlugin中的数组中添加空检查来处理错误.java
plugins\com.wikitude.phonegap.WikitudePlugin\src\android\WikitudePlugin.java
第 755 行:
向for (int i = 0; i < jsonArray.length(); i++) {}
添加空检查if(jsonArray != null){}
4. 更新平台
运行以下命令,使用维基插件中所做的更改更新平台。它将删除并重新添加平台。
cordova platform remove android
cordova platform add android
cordova platform remove ios
cordova platform add ios
5. iOS:允许相机使用
在iOS中,应用程序可能会崩溃并显示错误,
此应用已崩溃,因为它尝试在没有使用说明的情况下访问隐私敏感数据。 应用的 Info.plist 必须包含一个 NSCameraUsageDescription 键和一个字符串值,向用户解释应用如何使用此数据。
使用 PlistBuddy 修改应用的 plist 文件。
从 Mac 运行以下命令
$ /usr/libexec/PlistBuddy -c "Add :NSCameraUsageDescription string 'Access to the camera is needed to display augmented reality content on top of your camera image.'" "platforms/ios/"${PROJECT_NAME}"/"${PROJECT_NAME}"-Info.plist"
或者,您可以手动将以下条目添加到platforms/ios/"${PROJECT_NAME}"/"${PROJECT_NAME}"-Info.plist
NSCamera用法说明 需要访问相机才能在相机图像顶部显示增强现实内容。
6.创建您自己的增强现实体验
创建自己的增强现实体验的步骤可以在Wikitude SDK Cordova文档中找到。
使用Wikitude SDK可以做什么的代码示例可以在GitHub上找到。Wikitude Cordova插件的例子也可以在GitHub上找到。
对于isDeviceSupported
函数requiredFeatures
是可选的。但是,如果不提供它,该应用程序将无法在iOS上运行。因此,请确保您提供它。
requiredFeatures: [ "2d_tracking", "geo" ],
...
app.wikitudePlugin.isDeviceSupported(app.onDeviceSupported, app.onDeviceNotSupported, app.requiredFeatures);
7. 构建项目
运行以下命令以将项目生成到特定平台
cordova build android
cordova build ios
有关构建应用程序的更多详细信息,请参阅 Cordova 文档、Android 平台指南和 iOS 平台指南
注意:每个构建都需要 #7。其余步骤仅在初始设置期间需要。
支持的设备
参考: https://www.wikitude.com/external/doc/documentation/latest/phonegap/supporteddevices.html
安卓设备要求:- 安卓 4.0.3+
- 指南针
- 加速度计
- 高分辨率设备
- 后置摄像头
- OpenGL 2.0
- 具有四核或更高 CPU 的设备
- iPhone 5 或更新机型
- iPad(第 4 代(或更高版本
- iPod Touch(第 6 代(或更高版本
参考
Wikitude Cordova插件:https://www.wikitude.com/external/doc/documentation/latest/phonegap/
注意:
Step#3解决了Android问题,Step#5解决了iOS问题。
遵循可以提出和回答自己的问题