使用 android 的本机脚本

Nativescript using android

我是 NativeScript 的新手。 我想弄清楚如何使用 Bluetooth Native Api(Classic 而非 LE)。 我很难找到如何与蓝牙交互 api。

我碰到的第一堵墙是在我的打字稿代码中使用 android。

例如在组件中,如果我这样做:

ngOnInit(): void {
    console.info(android.os.Build.VERSION.SDK_INT)
} 

我收到错误:

JS:错误错误:未捕获(承诺):TypeError:无法读取未定义的属性 'os'

有什么建议吗?

要通过 TypeScript 访问本机 API(以及更好的智能感知),您需要生成的声明文件。幸运的是,您不必提供这些文件,因为它们已经可以通过 tns-platform-declarations plugin

要安装声明,请在您的 Angular 项目中执行 fiollwing

npm i tns-platform-declarations --save-dev

然后创建 references.d.ts 文件,内容如下:

/// <reference path="./node_modules/tns-platform-declarations/ios.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android.d.ts" />

最后,修改 tsconfig.json 文件的内容以包含以下内容:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "experimentalDecorators": true,
        "lib": [
            "es6",
            "dom"
        ]
    }
}

如果出于某种原因您不需要 IntelliSense,您可以跳过所有这些,只需在 *.ts 文件的开头给 android 一个类型

declare var android: any;

但是,我强烈推荐第一种方法,因为它会为您提供真正庞大的本机 API 的非常好的 IntelliSense