NativeScript 6.5.1 到 8.2:找不到名称 CLLocationManager、CLLocationManagerDelegate
NativeScript 6.5.1 to 8.2 : Cannot find Name CLLocationManager, CLLocationManagerDelegate
我是 NativeScript 和 webpack 的新手,我已经将我的原生脚本应用程序从 6.5.1 版本迁移到 8.2 版本并使用 @nativescript/geolocation : "8.0.2" 并且我的引用已损坏且无法构建我的 NativeScript 应用程序。
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;
}
}
我在 google 搜索中没有任何运气,我花了几个小时在这上面。你能告诉我如何解决这些参考问题吗?我被困在这里,不确定我是否遗漏了什么。
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"
]
}
通过将软件包降级为 "@nativescript/types": "~8.1.1"
解决了这个问题
我是 NativeScript 和 webpack 的新手,我已经将我的原生脚本应用程序从 6.5.1 版本迁移到 8.2 版本并使用 @nativescript/geolocation : "8.0.2" 并且我的引用已损坏且无法构建我的 NativeScript 应用程序。
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;
}
}
我在 google 搜索中没有任何运气,我花了几个小时在这上面。你能告诉我如何解决这些参考问题吗?我被困在这里,不确定我是否遗漏了什么。
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"
]
}
通过将软件包降级为 "@nativescript/types": "~8.1.1"
解决了这个问题