• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 位置服务子系统ChangeLog
2
3## cl.location.1 系统API和API9接口迁移到新增的@ohos.geoLocationManager.d.ts
4
5@ohos.geolocation.d.ts接口不支持抛出错误码,而API9和systemApi都需要支持抛出错误码,为了支持该功能,把@ohos.geolocation.d.ts中systemApi和API9所有接口,迁移到新增的@ohos.geoLocationManager.d.ts中,并增加错误码描述。
6
7后续需要import @ohos.geoLocationManager才能使用位置服务的系统API和API9接口:
8
9import geoLocationManager from '@ohos.geoLocationManager';
10
11
12**变更影响**
13
14仅对系统API和API9所有接口的使用有影响,需要import @ohos.geoLocationManager才能使用位置服务的系统API和API9接口:
15
16import geoLocationManager from '@ohos.geoLocationManager';
17
18对于其他接口无影响。
19
20**关键的接口/组件变更**
21
22| 类名 | 接口类型 | 接口声明 | 变更类型 |
23|  -- | -- | -- | -- |
24|geolocation| namespace | declare namespacegeolocation| API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
25|geolocation | interface | export interface ReverseGeocodingMockInfo  | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
26|geolocation | interface | export interface LocationMockConfig  | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
27|geolocation | interface | export interface CountryCode   | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
28|geolocation | enum | export enum CountryCodeType   | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
29|geolocation.GeoAddress | field | isFromMock?: Boolean; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
30|geolocation.Location  | field | isFromMock?: Boolean; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
31|geolocation.GeoLocationErrorCode  | field | NOT_SUPPORTED = 100 | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
32|geolocation.GeoLocationErrorCode  | field | QUERY_COUNTRY_CODE_ERROR | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
33|geolocation| method | function on(type: 'countryCodeChange', callback: Callback<CountryCode>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
34|geolocation| method | function off(type: 'countryCodeChange', callback?: Callback<CountryCode>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
35|geolocation| method | function getCountryCode(callback: AsyncCallback<CountryCode>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
36|geolocation| method | function getCountryCode(): Promise<CountryCode>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
37|geolocation| method | function enableLocationMock(scenario: LocationRequestScenario, callback: AsyncCallback<void>): void; | API9接口变更,该接口删除。 |
38|geolocation| method | function enableLocationMock(callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
39|geolocation| method | function enableLocationMock(scenario: LocationRequestScenario): Promise<void>; | API9接口变更,该接口删除。 |
40|geolocation| method | function enableLocationMock(): Promise<void>; |  API9接口变更,迁移到@ohos.geoLocationManager.d.ts |
41|geolocation| method | function disableLocationMock(scenario: LocationRequestScenario, callback: AsyncCallback<void>): void; | API9接口变更,该接口删除。 |
42|geolocation| method | function disableLocationMock(callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
43|geolocation| method | function disableLocationMock(scenario: LocationRequestScenario): Promise<void>; | API9接口变更,该接口删除。 |
44|geolocation| method | function disableLocationMock(): Promise<void>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
45|geolocation| method | function setMockedLocations(config: LocationMockConfig, callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
46|geolocation| method | function setMockedLocations(config: LocationMockConfig): Promise<void>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
47|geolocation| method | function enableReverseGeocodingMock(callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
48|geolocation| method | function enableReverseGeocodingMock(): Promise<void>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
49|geolocation| method | function disableReverseGeocodingMock(callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
50|geolocation| method | function disableReverseGeocodingMock(): Promise<void>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
51|geolocation| method | function setReverseGeocodingMockInfo(mockInfos: Array<ReverseGeocodingMockInfo>, callback: AsyncCallback<void>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
52|geolocation| method | function setReverseGeocodingMockInfo(mockInfos: Array<ReverseGeocodingMockInfo>): Promise<void>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
53|geolocation| method | function isLocationPrivacyConfirmed(type: LocationPrivacyType, callback: AsyncCallback<boolean>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
54|geolocation| method | function isLocationPrivacyConfirmed(type: LocationPrivacyType): Promise<boolean>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts  |
55|geolocation| method | function setLocationPrivacyConfirmStatus(type: LocationPrivacyType, isConfirmed: boolean, callback: AsyncCallback<boolean>): void; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts,callback返回值改为void。  |
56|geolocation| method | function setLocationPrivacyConfirmStatus(type: LocationPrivacyType, isConfirmed: boolean): Promise<boolean>; | API9接口变更,迁移到@ohos.geoLocationManager.d.ts,promise返回值改为void。  |
57
58**适配指导(可选,不涉及则可以删除)**
59
60以enableLocation为例,在新版本上需要使用如下方式进行调用:
61
62  ```ts
63  import geoLocationManager from '@ohos.geoLocationManager';
64  try {
65      geoLocationManager.enableLocation((err, data) => {
66          if (err) {
67              console.log('enableLocation: err=' + JSON.stringify(err));
68          }
69      });
70  } catch (err) {
71      console.error("errCode:" + err.code + ",errMessage:" + err.message);
72  }
73  ```
74
75## cl.location.2 位置服务权限变更
76
77从API9开始,增加ohos.permission.APPROXIMATELY_LOCATION,表示模糊位置权限。
78
79如果应用开发者使用的API版本大于等于9,则需要同时申请ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION,单独申请ohos.permission.LOCATION会失败。
80
81**变更影响**
82
83如果是存量应用(使用的API版本小于9),则无影响。如果使用的API版本大于等于9,位置服务权限申请方式有变更,详情如下:
84
85应用在使用系统能力前,需要检查是否已经获取用户授权访问设备位置信息。如未获得授权,可以向用户申请需要的位置权限,申请方式请参考下文。
86
87系统提供的定位权限有:
88
89- ohos.permission.LOCATION
90
91- ohos.permission.APPROXIMATELY_LOCATION
92
93- ohos.permission.LOCATION_IN_BACKGROUND
94
95访问设备的位置信息,必须申请权限,并且获得用户授权。
96
97API9之前的版本,申请ohos.permission.LOCATION即可。
98
99API9及之后的版本,需要申请ohos.permission.APPROXIMATELY_LOCATION或者同时申请ohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION;无法单独申请ohos.permission.LOCATION100
101| 使用的API版本 | 申请位置权限 | 申请结果 | 位置的精确度 |
102| -------- | -------- | -------- | -------- |
103| 小于9 | ohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |
104| 大于等于9 | ohos.permission.LOCATION | 失败 | 无法获取位置。 |
105| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATION | 成功 | 获取到模糊位置,精确度为5公里。 |
106| 大于等于9 | ohos.permission.APPROXIMATELY_LOCATIONohos.permission.LOCATION | 成功 | 获取到精准位置,精准度在米级别。 |
107
108如果应用在后台运行时也需要访问设备位置,除需要将应用声明为允许后台运行外,还必须申请ohos.permission.LOCATION_IN_BACKGROUND权限,这样应用在切入后台之后,系统可以继续上报位置信息。
109
110开发者可以在应用配置文件中声明所需要的权限,具体可参考[授权申请指导](../../../application-dev/security/accesstoken-guidelines.md)。
111
112**关键的接口/组件变更**
113
114如果是存量应用(使用的API版本小于9),则无影响。
115
116如果使用的API版本大于等于9,则在使用@ohos.geolocation和@ohos.geoLocationManager中需要ohos.permission.LOCATION权限的接口时,都需要按照上文所述方式申请对应权限。
117