nativeScript-wikitude-socios
由red-0ne创作 | v8.4.0-2.0.3
您的出色的 NativeScript 插件。
npm i --save nativescript-wikitude-socios

nativeScript-wikitude

npm version

NPM

提供对 Wikitude AR 的 nativeScript 访问。

版本格式如下 ${wikitude-version}-${plugin-version} 示例: 7.2.1-1.1.0 是 Wikitude 版本 7.2.1,插件版本 1.1.0。

截图即将推出!

先决条件/要求

权限

在使用此插件之前,您应确保您的应用程序具有相机和位置的权限,为了在 android 和 ios 上轻松完成此操作,您可以使用此插件 @spartadigital/nativescript-permissions

运行演示

我们在演示应用程序中包含了一个非常基础的 AR 示例,

但如果您想从 wikitude 示例 中检查一些更高级的功能并将它们放置在 demo/app/wikitude 中... 然后,您需要在 Nativescript-angular 的 items.component.ts 或常规 Nativescript 的 main-view-model.ts 中更新 URL 参考。

然后,从 Wikitude 网站获取 一个试用许可证并将其放置在 demo/app/main-view-model.ts 的第 13 行

安装

要为您的项目安装,您可以使用

tns plugin add nativescript-wikitude

对于 Nativescript Angular 项目,您需要在您的 app.component.ts 中导入元素

    import { Wikitude } from 'nativescript-wikitude';
// ...snip....
registerElement('Wikitude', () => Wikitude);

然后在您的 ar.component.html

    <Wikitude [url]="WikitudeURL" 
(WorldLoaded)="onWorldLoaded($event)"
(JSONReceived)="onJSON($event)">

</Wikitude>

并在您的 ar.component.ts

    import { Wikitude } from 'nativescript-wikitude';

// ...snip...

WikitudeInstance: Wikitude;
WikitudeURL: string = "~/wikitude_world/index.html";

onWorldLoaded($event) {
this.WikitudeInstance = $event.owner; // or you can use Angular's ViewChild
}

onJSON($event) {
console.log(JSON.stringify($event.data));
}

// ...snip...

并在您的应用程序中的某个位置,您需要定义 Wikitude 许可证,您可以从 Wikitude 获取一个(免费试用许可证)

    (global as any).wikitudeLicense: string = "YOUR_LICENSE_KEY_HERE"

那么,您就在您的 Nativescript 应用程序中启用了 Wikitude AR!

用法

使用您自己的位置提供程序

默认情况下,此插件具有基本的位置提供程序,如果这不符合您的目的,您可以在完全加载后禁用它,以下代码


onWorldLoaded($event) {
this.WikitudeInstance = $event.owner; // or you can use Angular's ViewChild
this.WikitudeInstance.disableLocationProvider();
}

禁用后,基于地理位置的 AR 将不会工作,除非您提供自己的位置,这可以通过以下方式实现

    this.WikitudeInstance.setLocation({ latitude, longitude, altitude, accuracy });

这如果您需要单一位置状态很有用。

禁用后,您可以使用以下方式重新启用它

    this.WikitudeInstance.enableLocationProvider();

TODO

  • 插件 API 暴露,不确定如何进行,Wikitude 允许使用其插件 API(一个插件示例是面部识别)使用内置的 CPP 构建,并使用其插件 API 链接。我不确定如何允许用户这样做。任何建议都将受到欢迎...
  • 检测设备是否需要校准:目前由于 Android 导致尝试监听此事件时崩溃而被阻止。
  • 相机事件:对于开发人员来说,检查相机打开、关闭和任何崩溃可能很有用。
  • 设置 Wikitude LicenseKey 和必需功能的更好方式。

API

属性

属性 默认值 描述
url "" Wikitude "ARWorld" 的 URL
功能 ` Features.ImageTracking Features.InstantTracking

函数

函数 参数 描述
setLocation() { latitude: number, longitude: number, altitude: number, accuracy: number } 设置 ARWorld 中的位置
hasFeature() feature : number 检查您的设备是否支持这些功能(或您的许可证是否支持)
loadUrl() url: 字符串 在 Wikitude WebView 中加载 URL
reload() 重新加载当前 Wikitude WebView
clearCache() 清除 Wikitude 缓存
toggleFlash() 切换设备的闪光灯
switchCamera() 切换 Wikitude 使用的相机
captureScreen() captureWebViewContent: 布尔值 捕获当前视图,也可以捕获 WebView 内容
disableLocationProvider() 禁用位置提供者(您需要提供自己的位置提供者以使 GEO/POI 功能正常工作)
enableLocationProvider() 启用位置提供者

事件

事件 描述 类型
WorldLoadSuccess 当 ARWorld 成功加载时触发 WorldLoadSuccessEventData
WorldLoadFail 在加载 ARWorld 时发生错误时触发 WorldLoadFailedEventData
JSONReceived 当 ARWorld 发送 JSON 对象时触发 JSONReceivedEventData
ScreenCaptureSuccess 当屏幕被捕获时触发 ScreenCaptureSuccessEventData
ScreenCaptureFail 当 Wikitude 无法捕获屏幕时触发 ScreenCaptureFailedEventData

所有内容都可以从 index.d.ts 中导入。

许可证

Wikitude 是 (c) Wikitude GmbH 在使用前请参阅他们的 最终用户许可协议

Apache 许可证版本 2.0,2004 年 1 月