- 版本:1.0.3
- GitHub: https://github.com/MattCCC/nativescript-wikitude-sdk
- NPM: https://npmjs.net.cn/package/nativescript-wikitude-sdk
- 下载
- 昨天:1
- 上周:4
- 上个月:10
NativeScript Wikitude SDK
提供 NativeScript 8+ 对 Wikitude 增强现实(Android 上为 9.1.0,iOS 上为 9.0.0)的访问。
先决条件 / 要求
权限
在您可以使用此插件之前,应确保您的应用程序具有相机和位置权限,为了在 android 和 ios 上轻松完成此操作,您可以使用此插件 @spartadigital/nativescript-permissions
运行演示
提供基本的 Vue 兼容演示。
如果您想从 wikitude 示例 中检查一些更高级的内容并将其放置在 demo/app/WikitudeExamples
中... 然后,在 Nativescript-angular 的 items.component.ts
或常规 Nativescript 的 main-view-model.ts
中更新 URL 引用。
然后从 Wikitude 网站 获取试用许可证,并将其放置在 demo/app/main-view-model.ts
的第 13 行
安装
要为您的项目安装,可以使用
tns plugin add nativescript-wikitude-sdk
对于 Nativescript Angular 项目,您需要在 app.component.ts
中导入元素
import { Wikitude } from "nativescript-wikitude-sdk";
// ...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-sdk';
// ...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();
待办事项
- 更新到 Wikitude 9.5(Android 和 iOS)
- 插件 API 暴露。Wikitude 允许使用其插件 API 使用内置的 C++ 插件并链接到插件
- 检测设备是否需要校准:目前由于 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: string |
在 Wikitude WebView 中加载 URL |
reload() | 重新加载当前 Wikitude WebView | |
clearCache() | 清除 Wikitude 缓存 | |
toggleFlash() | 切换设备闪光灯 | |
switchCamera() | 切换 Wikitude 使用的摄像头 | |
captureScreen() | captureWebViewContent: boolean |
捕获当前视图,也可以捕获 WebView 内容 |
disableLocationProvider() | 禁用位置提供者(您需要自己提供用于 GEO/POI 功能的提供者) | |
enableLocationProvider() | 启用位置提供者 |
事件
事件 | 描述 | 类型 |
---|---|---|
WorldLoadSuccess | 当 ARWorld 成功加载时触发 | WorldLoadSuccessEventData |
WorldLoadFail | 在加载 ARWorld 时发生错误时触发 | WorldLoadFailedEventData |
JSONReceived | 当 ARWorld 发送 JSON 对象时触发 | JSONReceivedEventData |
ScreenCaptureSuccess | 屏幕捕获时触发 | ScreenCaptureSuccessEventData |
ScreenCaptureFail | 当 Wikitude 失败捕获屏幕时触发 | ScreenCaptureFailedEventData |
所有内容均可从 index.d.ts 导入。
鸣谢
曾经有一个来自 @breningham/nativescript-wikitude 的分支,该分支最初启动了插件。不幸的是,它已经不活跃,因此创建了另一个分支。自那时起,插件已经重写了多次,这个新版本为 NativeScript 7 兼容性提供了所有可能的更新。
许可证
Wikitude 是 (c) Wikitude GmbH 在使用前请参阅他们的 最终用户许可协议
Apache License 版本 2.0,2004 年 1 月