我正在尝试在我的ionicframework项目中导入新功能。我执行了以下命令行:
$ 离子科尔多瓦插件添加科尔多瓦插件唯一设备ID
$ npm install --save @ionic-native/unique-device-id
在我的文件MyOwnService.ts
中,我正在导入它:
import { UniqueDeviceID } from '@ionic-native/unique-device-id';
import { Http } from '@angular/http';
然后在我MyOwnService
的构造函数中:
constructor(http: Http, uniqueDeviceID: UniqueDeviceID) {
console.log('Loading provider');
uniqueDeviceID.get()
.then((uuid: any) => console.log("UID : " + uuid))
.catch((error: any) => console.log("UIDERR : " + error));
}
但uniqueDeviceID
总是不确定的。如果我在构造函数中添加一个额外的参数,http' 也不再起作用。
我错过了什么吗?我必须在app.module.ts
中添加一些东西吗?
我验证了目录中是否存在workspacedir/node_modules/@ionic-native/unique-device-id´
UniqueDeviceID 必须是提供程序的提供程序吗?
是的。从Ionic-Native 3.x开始,所有离子原生服务都需要设置为提供者。查看此处。
@NgModule({
...
providers: [
...
UniqueDeviceID
...
]
...
})
export class AppModule { }
其次,访问插件时,您需要使用如下所示this.platform.ready()
:
constructor(http: Http, uniqueDeviceID: UniqueDeviceID) {
console.log('Loading provider');
this.platform.ready().then(() => {
uniqueDeviceID.get()
.then((uuid: any) => console.log("UID : " + uuid))
.catch((error: any) => console.log("UIDERR : " + error));
});
}
还要确保您在模拟器/设备中进行测试,因为使用ionic serve
时未启用 cordova 插件。