Sandbox Mode
Sandbox mode is currently not supported, due to incompatability with the locking mechanism that prevents different applications using the SDK from interrupting each other.
The Issue with Sandbox Mode
The Jabra SDK creates a lock file in /private/tmp
when initializing. This lock prevents different applications using the SDK from interrupting each other when communicating with the devices.
The lock file needs to be accessible by all applications using the SDK. However, when running in Sandbox mode the app is running in an isolated environment, unable to interact with other applications. This is why Sandbox mode currently is not supported.
Possible Work-Around
Sandboxed applications can be granted access to the /private/tmp
folder using the com.apple.security.temporary-exception.files.absolute-path.read-write
entitlement.
Please note that Apple has rejected our attempts to publish applications to the App Store with this entitlement.
Example Entitlements File
Below is an example of the entitlements needed to use the SDK in Sandbox mode.
-
com.apple.security.device.usb
is needed to enable the connection to the devices. -
com.apple.security.network.client
is needed to download manifest files and certain other features like the Settings API and downloading product images. -
com.apple.security.temporary-exception.files.absolute-path.read-write
is needed to create a lock file and communicate with devices.
<?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.usb</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<array>
<string>/private/tmp/</string>
</array>
</dict>
</plist>