I would like to call the ios native api's in my NativeScript Application Version 8 like this
import { Injectable } from "@angular/core";
import * as geoLocation from "nativescript-geolocation";
import { Logger } from "../../shared/default-logger.service";
import { LocationServiceBase } from "./location.service.common";
@Injectable()
export class LocationService extends LocationServiceBase {
private iosLocManager: CLLocationManager;
private locManagerDelegate: LocationMangerDelegate;
constructor(private logger: Logger) {
super(logger);
this.iosLocManager = new CLLocationManager();
this.locManagerDelegate = new LocationMangerDelegate();
this.iosLocManager.desiredAccuracy = 3;
this.iosLocManager.distanceFilter = 0.1;
this.logger.log("before setting delegate");
this.iosLocManager.delegate = this.locManagerDelegate;
this.logger.log("after setting delegate");
}
protected getDirection(location: geoLocation.Location): number {
return this.locManagerDelegate.currentHeading;
}
startUpdatingHeading(): void {
this.locManagerDelegate.currentHeading = null;
this.iosLocManager.startUpdatingHeading();
}
stopUpdatingHeading(): void {
this.iosLocManager.stopUpdatingHeading();
}
}
export class LocationMangerDelegate extends NSObject implements CLLocationManagerDelegate {
public static ObjCProtocols = [CLLocationManagerDelegate]; // tslint:disable-line:variable-name
currentHeading: number;
locationManagerDidUpdateHeading(locationManager: CLLocationManager, heading: CLHeading): void {
this.currentHeading = heading.trueHeading;
}
}
In the NativeScript Version 6 CLLocationManager, CLLocationManagerDelegate were avaliable in the tns-platform-declarations but In the New Version 8 there is no tns-platform-declarations package and its been replaced with @nativescript/types.
and there is no CLLocationManager, CLLocationManagerDelegate in the @nativescript/types package, how can i use these in the new version ?
Package.json
{
"license": "SEE LICENSE IN <your-license-filename>",
"repository": "<fill-your-repository-here>",
"dependencies": {
"@angular/animations": "~13.2.0",
"@angular/common": "~13.2.0",
"@angular/compiler": "~13.2.0",
"@angular/core": "~13.2.0",
"@angular/forms": "~13.2.0",
"@angular/http": "8.0.0-beta.10",
"@angular/platform-browser": "~13.2.0",
"@angular/platform-browser-dynamic": "~13.2.0",
"@angular/router": "~13.2.0",
"base-64": "^0.1.0",
"cross-env": "^5.2.0",
"lodash": "^4.17.11",
"@nativescript/angular": "^13.0.0",
"@nativescript/appversion": "2.0.0",
"@nativescript/camera": "5.0.10",
"nativescript-couchbase": "^1.0.18",
"@nativescript/email": "2.0.5",
"@nativescript/geolocation": "8.0.2",
"nativescript-orientation-free": "2.2.5",
"nativescript-phone": "3.0.3",
"nativescript-screen-orientation": "^2.0.0",
"nativescript-theme-core": "~1.0.4",
"reflect-metadata": "~0.1.13",
"rxjs": "~7.5.0",
"rxjs-compat": "^6.4.0",
"utf8": "^3.0.0",
"zone.js": "~0.11.5",
"@nativescript/core": "~8.2.0"
},
"devDependencies": {
"@angular/compiler-cli": "~13.2.0",
"@nativescript/schematics": "~0.5.0",
"@ngtools/webpack": "~13.2.0",
"@nativescript/webpack": "5.0.6",
"@angular-devkit/build-angular": "~13.2.0",
"@nativescript/ios": "8.2.1",
"@nativescript/types": "~8.2.0",
"typescript": "~4.5.5"
},
"readme": "NativeScript Application",
"main": "./src/main.ts"
}
reference.d.ts
/// <reference path="./node_modules/@nativescript/types/index.d.ts" />
tsconfig.json
{
"compilerOptions": {
"module": "esnext",
"target": "es2017",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noEmitHelpers": true,
"noEmitOnError": true,
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"lib": [
"dom",
"es2017"
],
"baseUrl": ".",
"paths": {
"~/*": ["src/*"],
"@/*": ["src/*"]
},
"moduleResolution": "node",
"removeComments": false
},
"include": [ "src/**/*.ios.ts"],
"files": ["./src/main.ts", "./reference.d.ts","./src/polyfills.ts"],
"exclude": [
"node_modules",
"platforms"
]
}
Try "@nativescript/types" plugin version 8.1.1. I have same problem with 8.2.0.
I also have these lines on my references.d.ts file.
<reference path="./node_modules/@nativescript/types-ios/index.d.ts" />
<reference path="./node_modules/@nativescript/types-android/index.d.ts" />