0

Wikitude Cordova 插件用于在基于 Cordova 的应用程序中创建我们自己的增强现实。但是在添加插件并按照官方示例之后,应用程序失败了,

  • 在 android 中,app.wikitudePlugin.isDeviceSupported 失败并出现错误,

    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.

有没有变通办法。如何解决Android和iOS问题?

4

1 回答 1

0

Wikitude Cordova 插件

Wikitude是一个增强现实引擎。Wikiitude Cordova 插件是一个用于 Cordova 的增强现实 SDK,用于将增强现实体验嵌入到基于 PhoneGap 和 Cordova 的应用程序中。

注意:本文档适用于com.wikitude.phonegap.wikitudeplugin v 6.1.0其他版本未测试

1. 将插件添加到您的应用程序

打开控制台并转到您的项目目录并运行 cordova plugin add 命令

$ cordova plugin add https://github.com/Wikitude/wikitude-cordova-plugin.git

这会将插件添加到您的应用程序中。

运行cordova prepare以使项目准备好按照config.xml构建

2. 输入维基授权密钥

转到许可证页面并下载您的 Wikiitude SDK 的个人许可证密钥。

要使用具有特定许可证密钥的 Wikitude Cordova 插件,请使用WikitudePlugin.js第13this._sdkKey中定义的属性。

plugins\com.wikitude.phonegap.WikitudePlugin\www\WikitudePlugin.js

3.Android:处理Wikitude插件错误

在 android 中,app.wikitudePlugin.isDeviceSupported 可能会因错误而失败,

尝试在空对象引用上调用虚拟方法“int org.json.JSONArray.length()”

通过向WikiitudePlugin.java中的数组添加空检查来处理错误

plugins\com.wikitude.phonegap.WikitudePlugin\src\android\WikitudePlugin.java

第 755 行:添加一个空检查if(jsonArray != null){}for (int i = 0; i < jsonArray.length(); i++) {}

4.更新平台

运行以下命令以使用 Wikitude 插件中所做的更改来更新平台。它将删除并重新添加平台。

cordova platform remove android cordova platform add android cordova platform remove ios cordova platform add ios

5. iOS:允许 CameraUsage

在 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

NSCameraUsageDescription 需要访问相机才能在相机图像上显示增强现实内容。

6. 创建自己的增强现实体验

创建您自己的增强现实体验的步骤可以在Wikiitude SDK Cordova 文档中找到。

可以在GitHub 上找到使用 Wikitude SDK 可以完成的代码示例。也可以在GitHub 上找到示例 Wikiitude Cordova 插件。

对于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+
  • 罗盘
  • 加速度计
  • 高分辨率设备 (hdpi)
  • 后置摄像头
  • OpenGL 2.0
  • 具有四核 CPU 或更高的设备
支持的 iOS 设备:
  • iPhone 5 或更新版本
  • iPad(第 4 代)或更新版本
  • iPod Touch(第 6 代)或更新版本

参考

Wikitude Cordova 插件: https ://www.wikitude.com/external/doc/documentation/latest/phonegap/

笔记:

Step#3 解决了 Android 问题,Step#5 解决了 iOS 问题。

遵循可以提出和回答您自己的问题

于 2017-08-02T07:52:28.110 回答