Search code examples
iosangularxcodewebpacknativescript

NativeScript 6.5.1 to 8.2 : Cannot find Name CLLocationManager, CLLocationManagerDelegate


I am new to NativeScript and webpack , i have migrated my native script app from 6.5.1 to 8.2 version and using @nativescript/geolocation : "8.0.2" and my references are broken and unable to build my NativeScript App.

enter image description here

enter image description here

Code

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;
    }

}

I did not have any luck on google searches and i have spent hours on this .can you please let me know how can I fix these reference issues ? i am stuck here, not sure if i am missing anything.

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/camera": "5.0.10",
    "nativescript-couchbase": "^1.0.18",
    "nativescript-appversion": "1.4.4",
    "@nativescript/email": "2.0.5",
    "@nativescript/geolocation": "8.0.2",
    "nativescript-phone": "3.0.3",
    "nativescript-screen-orientation": "^2.0.0",
    "nativescript-orientation-free": "2.2.5",
    "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",
    "@nativescript/angular": "^13.0.0"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~13.2.0",
    "@angular/compiler-cli": "~13.2.0",
    "@nativescript/ios": "8.2.1",
    "@nativescript/schematics": "~0.5.0",
    "@nativescript/types": "~8.2.0",
    "@nativescript/webpack": "5.0.6",
    "@ngtools/webpack": "~13.2.0",
    "typescript": "~4.5.5"
  },
  "readme": "NativeScript Application",
  "main": "./src/main.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"
    ]
}


Solution

  • fixed this by downgrading the package to "@nativescript/types": "~8.1.1"