jts*_*soc 5 xcode ios dart flutter
我正在 Flutter 中进行开发,并尝试使用 geolocator 包获取 GPS 信息。
\n我能够在模拟器上毫无问题地获取 GPS 信息,但是当我在实际设备上启动该应用程序时,我无法获取 GPS。\n该应用程序工作正常,因此不是错误,但有一条消息。
\n“如果在主线程上调用此方法可能会导致 UI 无响应。相反,请考虑等待 -locationMana gerDidChangeAuthorization:回调并首先检查授权状态。”
\nFlutter 端的代码
\nFuture<Position> getGps(BuildContext context) async {\n return await Geolocator.getCurrentPosition(\n desiredAccuracy: LocationAccuracy.high,\n timeLimit: Duration(seconds: 5),\n );\n}\nRun Code Online (Sandbox Code Playgroud)\n(警告)IOS端的代码
\n - (ServiceStatus)checkServiceStatus:(PermissionGroup)permission {\n return [CLLocationManager locationServicesEnabled] ? ServiceSttus Enabled\n : ServiceStatusDisabled;\n }\nRun Code Online (Sandbox Code Playgroud)\n2023/1/26 添加
\n我已将其添加到 info.plist 中。尽管如此,我还是没有得到 GPS 信息。
\n信息列表
\n<key>NSLocationAlwaysUsageDescription</key>\n<string>Access location information to get a location</string>.\n<key>NSLocationWhenInUseUsageDescription</key>\n<string>Access location information to get location</string>\nRun Code Online (Sandbox Code Playgroud)\n如何获取 GPS 信息?\n已授予获取位置服务的权限。
\niOS:16.2\nxcode: 14\n地理定位器: 7.7.1
\n2023/1/26 添加
\n当前状态
\n模拟器(Android)\xe3\x80\x80...\xe3\x80\x87(已获取GPS信息)
\n模拟器(iOS(iphone SE2)) ...\xe3\x80\x87(已获取GPS信息。)
\n实际设备(iOS(iphone SE2)) ...\xc3\x97 (无法获取GPS)
\n尝试这个
在“pubspec.yaml”中添加“location_permissions:3.0.0+1”此依赖项。请注意,我对 flutter 1.22.0 执行了此操作,因此对于 flutter 2.0 这可能是一个问题。
导入文件中的包
import 'package:location_permissions/location_permissions.dart';
Run Code Online (Sandbox Code Playgroud)
在您想要请求权限的页面上添加以下代码。(最好将其添加到应用程序的第一页。)
@override
void initState() {
....
if (Platform.isIOS) {
location_permission();
}
....
}
Run Code Online (Sandbox Code Playgroud)
在同一个文件中添加以下两个方法
void location_permission() async {
final PermissionStatus permission = await _getLocationPermission();
if (permission == PermissionStatus.granted) {
final position = await geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.best);
// Use the position to do whatever...
}
}
Future<PermissionStatus> _getLocationPermission() async {
final PermissionStatus permission = await LocationPermissions()
.checkPermissionStatus(level: LocationPermissionLevel.location);
if (permission != PermissionStatus.granted) {
final PermissionStatus permissionStatus = await LocationPermissions()
.requestPermissions(
permissionLevel: LocationPermissionLevel.location);
return permissionStatus;
} else {
return permission;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |