权限优化
This commit is contained in:
parent
81f4d98449
commit
0e6d484e52
|
|
@ -2,9 +2,6 @@
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,65 @@ end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
flutter_additional_ios_build_settings(target)
|
... # Here are some configurations automatically generated by flutter
|
||||||
|
|
||||||
|
# Start of the permission_handler configuration
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
|
||||||
|
# You can enable the permissions needed here. For example to enable camera
|
||||||
|
# permission, just remove the `#` character in front so it looks like this:
|
||||||
|
#
|
||||||
|
# ## dart: PermissionGroup.camera
|
||||||
|
# 'PERMISSION_CAMERA=1'
|
||||||
|
#
|
||||||
|
# Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h
|
||||||
|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
|
||||||
|
'$(inherited)',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.calendar
|
||||||
|
# 'PERMISSION_EVENTS=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.reminders
|
||||||
|
# 'PERMISSION_REMINDERS=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.contacts
|
||||||
|
# 'PERMISSION_CONTACTS=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.camera
|
||||||
|
'PERMISSION_CAMERA=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.microphone
|
||||||
|
'PERMISSION_MICROPHONE=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.speech
|
||||||
|
# 'PERMISSION_SPEECH_RECOGNIZER=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.photos
|
||||||
|
# 'PERMISSION_PHOTOS=1',
|
||||||
|
|
||||||
|
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
|
||||||
|
# 'PERMISSION_LOCATION=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.notification
|
||||||
|
# 'PERMISSION_NOTIFICATIONS=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.mediaLibrary
|
||||||
|
# 'PERMISSION_MEDIA_LIBRARY=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.sensors
|
||||||
|
# 'PERMISSION_SENSORS=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.bluetooth
|
||||||
|
# 'PERMISSION_BLUETOOTH=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.appTrackingTransparency
|
||||||
|
# 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',
|
||||||
|
|
||||||
|
## dart: PermissionGroup.criticalAlerts
|
||||||
|
# 'PERMISSION_CRITICAL_ALERTS=1'
|
||||||
|
]
|
||||||
|
|
||||||
|
end
|
||||||
|
# End of the permission_handler configuration
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import '../../common/models/common/base_structure_result.dart';
|
||||||
import '../../common/models/meeting_room_info.dart';
|
import '../../common/models/meeting_room_info.dart';
|
||||||
import '../../common/models/meeting_room_msg.dart';
|
import '../../common/models/meeting_room_msg.dart';
|
||||||
import '../../common/models/meeting_room_user.dart';
|
import '../../common/models/meeting_room_user.dart';
|
||||||
import '../../utils/permission_handler.dart';
|
import '../../utils/permission/PermissionService.dart';
|
||||||
import '../../utils/toast_utils.dart';
|
import '../../utils/toast_utils.dart';
|
||||||
import 'meeting_main_state.dart';
|
import 'meeting_main_state.dart';
|
||||||
|
|
||||||
|
|
@ -595,8 +595,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
||||||
/// 初始化声网SDK
|
/// 初始化声网SDK
|
||||||
Future<void> initRtc() async {
|
Future<void> initRtc() async {
|
||||||
// 请求麦克风、摄像头权限
|
// 请求麦克风、摄像头权限
|
||||||
PermissionHandler.requestCameraPermission();
|
PermissionService.requestPermissions();
|
||||||
PermissionHandler.requestMicrophonePermission();
|
|
||||||
|
|
||||||
// 创建 RtcEngine 对象
|
// 创建 RtcEngine 对象
|
||||||
state.rctEngine.value = createAgoraRtcEngineEx();
|
state.rctEngine.value = createAgoraRtcEngineEx();
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import '../device_info.dart';
|
import '../device_info.dart';
|
||||||
|
import '../toast_utils.dart';
|
||||||
|
|
||||||
class AndroidPermissionHandler {
|
class AndroidPermissionHandler {
|
||||||
Future<void> requestAllPermissions() async {
|
Future<void> requestAllPermissions() async {
|
||||||
|
|
@ -13,6 +14,12 @@ class AndroidPermissionHandler {
|
||||||
await requestStoragePermission();
|
await requestStoragePermission();
|
||||||
await requestNotificationPermission();
|
await requestNotificationPermission();
|
||||||
await requestPhonePermission();
|
await requestPhonePermission();
|
||||||
|
await requestMicrophonePermission();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> requestCameraToMicrophonePermissions() async {
|
||||||
|
await requestCameraPermission();
|
||||||
|
await requestMicrophonePermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> requestLocationPermission() async {
|
Future<void> requestLocationPermission() async {
|
||||||
|
|
@ -54,11 +61,14 @@ class AndroidPermissionHandler {
|
||||||
Future<void> requestCameraPermission() async {
|
Future<void> requestCameraPermission() async {
|
||||||
PermissionStatus status = await Permission.camera.request();
|
PermissionStatus status = await Permission.camera.request();
|
||||||
if (status.isGranted) {
|
if (status.isGranted) {
|
||||||
print("Android: 相机权限已授予");
|
print("Android: 摄像头权限已授予");
|
||||||
} else if (status.isPermanentlyDenied) {
|
} else if (status.isPermanentlyDenied) {
|
||||||
print("Android: 相机权限被永久拒绝,请前往设置开启");
|
print("Android: 摄像头权限被永久拒绝,请前往设置开启");
|
||||||
|
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
||||||
|
openAppSettings();
|
||||||
} else {
|
} else {
|
||||||
print("Android: 相机权限被拒绝");
|
print("Android: 摄像头权限被拒绝");
|
||||||
|
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,4 +104,18 @@ class AndroidPermissionHandler {
|
||||||
print("Android: 电话权限被拒绝");
|
print("Android: 电话权限被拒绝");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<void> requestMicrophonePermission() async {
|
||||||
|
PermissionStatus status = await Permission.microphone.request();
|
||||||
|
if (status.isGranted) {
|
||||||
|
print("Android: 麦克风权限已授予");
|
||||||
|
} else if (status.isPermanentlyDenied) {
|
||||||
|
print("Android: 麦克风权限被永久拒绝,请前往设置开启");
|
||||||
|
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
||||||
|
openAppSettings();
|
||||||
|
} else {
|
||||||
|
print("Android: 麦克风限被拒绝");
|
||||||
|
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
|
import '../toast_utils.dart';
|
||||||
|
|
||||||
class IosPermissionHandler {
|
class IosPermissionHandler {
|
||||||
Future<void> requestAllPermissions() async {
|
Future<void> requestAllPermissions() async {
|
||||||
await requestLocationPermission();
|
await requestLocationPermission();
|
||||||
|
|
@ -8,6 +10,12 @@ class IosPermissionHandler {
|
||||||
await requestStoragePermission();
|
await requestStoragePermission();
|
||||||
await requestNotificationPermission();
|
await requestNotificationPermission();
|
||||||
await requestPhonePermission();
|
await requestPhonePermission();
|
||||||
|
await requestMicrophonePermission();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> requestCameraToMicrophonePermissions() async {
|
||||||
|
await requestCameraPermission();
|
||||||
|
await requestMicrophonePermission();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> requestLocationPermission() async {
|
Future<void> requestLocationPermission() async {
|
||||||
|
|
@ -33,11 +41,14 @@ class IosPermissionHandler {
|
||||||
Future<void> requestCameraPermission() async {
|
Future<void> requestCameraPermission() async {
|
||||||
PermissionStatus status = await Permission.camera.request();
|
PermissionStatus status = await Permission.camera.request();
|
||||||
if (status.isGranted) {
|
if (status.isGranted) {
|
||||||
print("iOS: 相机权限已授予");
|
print("iOS: 摄像头权限已授予");
|
||||||
} else if (status.isPermanentlyDenied) {
|
} else if (status.isPermanentlyDenied) {
|
||||||
print("iOS: 相机权限被永久拒绝,请前往设置开启");
|
print("iOS: 摄像头权限被永久拒绝,请前往设置开启");
|
||||||
|
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
||||||
|
openAppSettings();
|
||||||
} else {
|
} else {
|
||||||
print("iOS: 相机权限被拒绝");
|
print("iOS: 摄像头权限被拒绝");
|
||||||
|
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -71,4 +82,18 @@ class IosPermissionHandler {
|
||||||
print("iOS: 电话权限被拒绝");
|
print("iOS: 电话权限被拒绝");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<void> requestMicrophonePermission() async {
|
||||||
|
PermissionStatus status = await Permission.microphone.request();
|
||||||
|
if (status.isGranted) {
|
||||||
|
print("iOS: 麦克风权限已授予");
|
||||||
|
} else if (status.isPermanentlyDenied) {
|
||||||
|
print("iOS: 麦克风权限被永久拒绝,请前往设置开启");
|
||||||
|
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
||||||
|
openAppSettings();
|
||||||
|
} else {
|
||||||
|
print("iOS: 麦克风限被拒绝");
|
||||||
|
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'AndroidPermissionHandler.dart';
|
||||||
|
import 'IosPermissionHandler.dart';
|
||||||
|
|
||||||
|
class PermissionService {
|
||||||
|
static Future<void> requestPermissions() async {
|
||||||
|
if (Platform.isIOS) {
|
||||||
|
// 调用iOS权限处理逻辑
|
||||||
|
await IosPermissionHandler().requestCameraToMicrophonePermissions();
|
||||||
|
} else if (Platform.isAndroid) {
|
||||||
|
// 调用Android权限处理逻辑
|
||||||
|
await AndroidPermissionHandler().requestCameraToMicrophonePermissions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
|
||||||
import 'package:wgshare/utils/toast_utils.dart';
|
|
||||||
|
|
||||||
class PermissionHandler {
|
|
||||||
|
|
||||||
/// 摄像头权限
|
|
||||||
static Future<void> requestCameraPermission() async {
|
|
||||||
PermissionStatus status = await Permission.camera.request();
|
|
||||||
if (status.isGranted) {
|
|
||||||
debugPrint("wgs输出===:权限-摄像头权限已授予");
|
|
||||||
} else if (status.isPermanentlyDenied) {
|
|
||||||
debugPrint("wgs输出===:权限-摄像头权限被永久拒绝,请前往设置开启");
|
|
||||||
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
|
||||||
openAppSettings();
|
|
||||||
} else {
|
|
||||||
debugPrint("wgs输出===:权限-摄像头权限被拒绝");
|
|
||||||
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 麦克风权限
|
|
||||||
static Future<void> requestMicrophonePermission() async {
|
|
||||||
PermissionStatus status = await Permission.microphone.request();
|
|
||||||
if (status.isGranted) {
|
|
||||||
debugPrint("wgs输出===:权限-麦克风权限已授予");
|
|
||||||
} else if (status.isPermanentlyDenied) {
|
|
||||||
debugPrint("wgs输出===:权限-麦克风权限被永久拒绝,请前往设置开启");
|
|
||||||
ToastUtils.showError("权限被永久拒绝,请前往设置开启!");
|
|
||||||
openAppSettings();
|
|
||||||
} else {
|
|
||||||
debugPrint("wgs输出===:权限-麦克风权限被拒绝");
|
|
||||||
ToastUtils.showError("权限被拒绝,可能会导致相关功能不可用!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue