Version
menu_open
Target Platform(s):
Wwise SDK 2023.1.2
iOS/tvOS/visionOS-Specific Information

This chapter contains information that is specific to using the Wwise SDK for the iOS/tvOS/visionOS platform.

Warning: tvOS and visionOS SoundBanks must use iOS for their base platform.
Note: Unless otherwise specified, the mention "iOS" in this page and its subsections is used to describe interchangeably the iOS, tvOS, and visionOS specific platform details.

SDK Binary Folder Structure for iOS Platforms

The libraries and other binaries provided in the Wwise SDK for the iOS-based platforms are built against a variety of Xcode toolchains, with different folders for each version. The folder naming convention is $(PLATFORM)_Xcode$(XCODE_VERSION_MAJOR), where $(PLATFORM) is the platform name (iOS, tvOS, visionOS) and $(XCODE_VERSION_MAJOR) is a built-in variable provided by Xcode in the following format: XX00. For example, for a tvOS build using Xcode version 15.2, $(XCODE_VERSION_MAJOR) is 1500, so the folder name is tvOS_Xcode1500.

For a given iOS-based platform, all minor versions of Xcode are compatible if the major version matches. For example, an application built against Xcode 15.2 is compatible with Wwise libraries built against Xcode 15.0 (1500). Binaries from different iOS-based platforms are not compatible.

Note: Audiokinetic does not provide precompiled libraries for every Xcode release. Starting with Xcode 14, binaries compatible with stable releases of every major Xcode version are provided. Support for previous Xcode major versions will be removed when Apple's App Store stops accepting submissions for it.

Bluetooth Stuttering and Starvation

Using Bluetooth speakers and headphones induce a lot of latency in the audio. This is due to the Bluetooth compression and over-the-air communication stack in the OS itself. Because of this, latency-sensitive games such as rhythm games will have a degraded gameplay when the Bluetooth device is connected.

Wwise will automatically switch to a high latency mode to avoid stuttering when Bluetooth devices are used. It will revert back to regular latency when the device is disconnected, as specified by AkPlatformInitSettings.uNumRefillsInVoice at initialization.

Note: Using a Bluetooth device with the "Play and Record" audio session will force the OS to downsample all audio to 8 kHz. This behavior is related to the Bluetooth driver itself.

The iOS Audio Session

On iOS, many events such as an incoming phone or FaceTime call, usage of Siri, calendar alerts, or system sounds can prevent app audio from playing at any moment. Apple's audio session is the mechanic that handles the conflicts for access to audio hardware. Choosing the right audio session for your application is important. Fortunately, most of the implementation details when working with audio session are taken care of by the Wwise iOS SDK and little effort is required by the SDK client app to obtain a compliant and efficient audio app that behaves as expected. The following sections present the concept of the iOS audio session and its related Wwise-implemented policies.

3D audio support using Apple Spatial Audio

Wwise 3D audio is supported on iOS/tvOS/visionOS. It is implemented using Apple's Spatial Audio technology (not to be confused with Wwise Spatial Audio), and is designed for headphone output. It supports a spatialized bed, a passthrough mix, and a number of system audio objects.

Unlike other platforms supporting 3D audio, Apple platforms do not have a user preference for Spatial Audio in the operating system which applies to interactive audio applications. Therefore, the 3D audio pipeline in Wwise will always be activated as long as all the following requirements are met:

  1. The Audio Device property Allow 3D Audio is enabled in the Wwise project.
  2. The output device has two channels.
  3. AkOutputSettings::ePanningRule is set to AkPanningRule_Headphones. This is the default on iOS and visionOS, but not tvOS.

It is encouraged to allow the user to choose whether to use 3D Audio using an in-game setting, and swap between two Audio Device sharesets based on this setting.

Upon initialization, if 3D audio is activated, the main mix will be configured as 5th-order Ambisonic, unless the Main Mix Configuration for Binauralization property of the Audio Device dictates otherwise.

If the Audio Device's Allow System Audio Objects property is enabled, then the number of system audio objects supported by the sink is determined by AkPlatformInitSettings::uNumSpatialAudioPointSources.

NSPrivacyAccessedAPITypes in Privacy Manifest

Apple requires third-party applications and SDKs to provide a reason for using certain privacy-sensitive APIs in the NSPrivacyAccessedAPITypes entry in the privacy manifest (PrivacyInfo.xcprivacy).

Some Wwise libraries or source code samples use some privacy-sensitive APIs as part of their implementation. Declare these usages in your application's privacy manifest:

  • fstat: Used as part of the POSIX AkDefaultIOHookDeferred sample. This sample is not used as part of the prebuilt Wwise SDK libraries. However, it is used by the Wwise Unity integration.

For more information about the Privacy Manifest and NSPrivacyAccessedAPITypes, refer to this Apple Developer documentation page: Describing use of required reason API .

iOS Release Notes


Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell us about your project. We're here to help.

Register your project and we'll help you get started with no strings attached!

Get started with Wwise