Skip to main content

Apple Permissions

In this guide, you'll learn how to configure the necessary iOS and macOS permissions to ensure full functionality of the ODIN plugin in Unreal Engine.

iOS Setup

1. Initial Setup

Before configuring permissions, ensure your project is properly set up for iOS. Follow the official Unreal Engine guide: Setting up an Unreal Engine project for iOS.

2. Configuring Microphone Access

To enable microphone access, add the NSMicrophoneUsageDescription key to the iOS project's Plist Data. You can do this in two ways:

  1. Open the generated Xcode project.
  2. Locate the Info.plist file.
  3. Add the following entry:
    <key>NSMicrophoneUsageDescription</key><string>Required For Voice Chat</string>
  1. In Unreal, navigate to Project Settings > Platforms > iOS > Additional Plist Data.
  2. Add the following line:
<key>NSMicrophoneUsageDescription</key>
<string>Required For Voice Chat</string>

Setting this value in Project Settings ensures the change is available for all developers using Source Control. Modifications in Xcode are usually not tracked by version control systems like Git.

Once configured, Unreal will automatically request microphone permission when the app launches for the first time.

macOS Setup

When building for macOS you'll need to update both the Plist Data and the Entitlements to allow your app to access the microphone.

1. Updating Plist Files

Open up the Project Settings and navigate to Xcode Projects > Plist Files. There you'll find the path to the Mac: Info.plist Template. Open the file in Text Editor and add the line

<key>NSMicrophoneUsageDescription</key><string>Required For Voice Chat</string>
info

If you cannot find the file, click on the Restore Info.plist to default button in Unreal's Project Settings to regenerate it.

Your Plist file will look something like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSHighResolutionCapable</key>
<false/>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>NSMicrophoneUsageDescription</key>
<string>Required For Voice Chat</string>
</dict>
</plist>

2. Updating Entitlements

Similar to the Plist file update, open up the Project Settings and navigate to Xcode Projects > Mac: Development Entitlements. Open the Sandbox.NoNet.entitlements file in a Text Editor and add the lines

<key>com.apple.security.device.audio-input</key>
<true/>
info

If you can't find the file, click on the Restore entitlements to default button. Unreal will then regenerate the entitlement files.

Your entitlements file will look something like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
</dict>
</plist>

Apply the same settings to your Shipping Entitlements by opening the Sandbox.Server.entitlements and repeating the above steps.

Repackage your Application and your game will request the Microphone Permission the next time you start it up.

Managing Source Control

By default, Plist templates and entitlement files are stored in [ProjectName]/Build, which is often ignored by Source Control solutions like Git. To include these files:

  1. Move the adjusted Plist and entitlement files to a tracked directory.
  2. Update the paths in Project Settings to point to the new location.

What's next?

This guide covers the minimal setup required to request microphone permissions for iOS and macOS in Unreal Engine.

You could take a look at our Sample Project, which includes a minimal multiplayer setup that can be used to kickstart your project. For an overview of what these samples offer, visit our introduction to the Odin Minimal Samples projects. Ready to dive in? Access the full source code on our GitHub page:

Odin Minimal Samples on Github

For even more information on Unreal with Odin Voice Chat, check out the Odin Discord and take a look at the following guides:

Join our DISCORD SERVER
@4Players
Getting started with ODIN

Follow this guide to learn how to install and setup ODIN in your Unreal Project using Blueprint.

Let's start
Blueprint Reference

Check out our extensive Blueprint reference to learn more about the nodes our SDK provides and how to connect them into your game.