如何为 Unreal Engine 项目添加实时互动所需的权限?
更新时间不可用
为了在不同的目标平台上实现实时互动功能,你需要为你的 Unreal Engine 项目添加访问摄像头、访问麦克风等权限。根据目标平台不同,你可以参考本文采取不同的步骤和配置来获取这些权限。
iOS
如果目标平台是 iOS,在 Unreal Editor 中,点击 Edit > Project Settings > Platforms > iOS 打包项目,粘贴以下代码到 Additional Plist Data 输入框中,添加实时互动所需的摄像头和麦克风权限:
<key>NSCameraUsageDescription</key><string>AgoraVideoCall</string><key>NSMicrophoneUsageDescription</key><string>AgoraVideoCall</string>macOS
如果目标平台是 macOS,参考以下步骤为你的 Unreal Engine 项目添加实时互动所需的摄像头和麦克风权限:
步骤一
对于 Unreal Engine 4,你可以直接修改项目打包后生成的 Info.plist 文件,为你的项目添加所需权限;如果你使用的是 Unreal Engine 5,声网建议你修改引擎自带的 Info.plist 模板,进而确保打包时生成的文件中已经添加所需权限。
在 Unreal Editor 中,点击 Edit > Project Settings > Platforms > Mac 打包项目。右击编译生成的应用程序文件 (.app),选择 Show Package Contents 显示包内容,其中包含打包生成的 Info.plist 文件。
打开 ./Epic Games/<Unreal Engine 版本对应的路径>/Engine/Source/Runtime/Launch/Resources/Mac,即 Info.plist 模板所在的本地路径。
步骤二
在 Info.plist 文件的 Information Property List 中添加如下摄像头和麦克风隐私权限:
- Privacy - Camera Usage Description:摄像头使用权限
- Privacy - Microphone Usage Description:麦克风使用权限
在 Xcode 中双击打开 Info.plist 文件,在 Information Property List 下添加摄像头和麦克风隐私权限:
使用文本编辑器打开 Info.plist 文件,添加以下 XML 片段:
<key>NSCameraUsageDescription</key>
<string>Use camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>Use mic</string>Android
如果目标平台是 Android,参考以下步骤为你的 Unreal Engine 项目添加如下实时互动所需的权限:
android.permission.RECORD_AUDIO:录音权限。android.permission.CAMERA:相机权限。android.permission.READ_PHONE_STATE:读取电话状态权限。android.permission.WRITE_EXTERNAL_STORAGE:写入外部存储权限。
-
在
Project/Source/Project/AgoraWidget.h文件中添加以下 include 代码:C++ #if PLATFORM_ANDROID #include "AndroidPermission/Classes/AndroidPermissionFunctionLibrary.h" #endif -
在
Project/Source/Project/Project.Build.cs文件中添加 AndroidPermission 库:C++ if (Target.Platform == UnrealTargetPlatform.Android) { PrivateDependencyModuleNames.AddRange(new string[] { "AndroidPermission" }); } -
检查是否已获取安卓权限。在
AgoraWidget.h和AgoraWidget.cpp文件中添加NativeConstruct和CheckAndroidPermission方法和实现,并在NativeConstruct中调用CheckAndroidPermission方法来检查是否已获取安卓系统所需权限。示例代码如下:C++ // AgoraWidget.h private: // 获取安卓权限 void CheckAndroidPermission();C++ // AgoraWidget.cpp // 在 #include "AgoraWidget.h" 后添加如下代码 void UAgoraWidget::CheckAndroidPermission() { #if PLATFORM_ANDROID FString pathfromName = UGameplayStatics::GetPlatformName(); if (pathfromName == "Android") { TArray<FString> AndroidPermission; AndroidPermission.Add(FString("android.permission.CAMERA")); AndroidPermission.Add(FString("android.permission.RECORD_AUDIO")); AndroidPermission.Add(FString("android.permission.READ_PHONE_STATE")); AndroidPermission.Add(FString("android.permission.WRITE_EXTERNAL_STORAGE")); AndroidPermission.Add(FString("android.permission.ACCESS_WIFI_STATE")); AndroidPermission.Add(FString("android.permission.ACCESS_NETWORK_STATE")); UAndroidPermissionFunctionLibrary::AcquirePermissions(AndroidPermission); } #endif } void UAgoraWidget::NativeConstruct() { Super::NativeConstruct(); #if PLATFORM_ANDROID CheckAndroidPermission() #endif }
在初始化 RTC 引擎前,需要检查是否已获取实现实时互动所需的 Android 系统权限。你可以参照下图创建节点,用于添加 Android 系统中访问麦克风、访问摄像头等权限。