This page describes the process of delivering your application to the Mac App Store.
First, you need to make sure you have the correct provisioning profiles installed in your keychain: the “3rd Party Mac Developer Application” and “3rd Party Mac Developer Installer” profiles. See Apple’s developer documentation on Maintaining Your Signing Identities and Certificates to learn how to do this.
Go to Edit > Project Settings > Player. Open the Other Settings tab and navigate to Mac App Store Options. Unity automatically applies these settings to your app’s info.plist file as CF keys (see Apple’s developer documentation on Core Foundation Keys to learn more).
Property | Function |
---|---|
Bundle Identifier | Enter the Bundle Identifier of your iTunesConnect App. This appears as CFBundleIdentifier in the associated info.plist file.See Apple developer documentation on CFBundleIdentifier to learn more. |
Version* | Enter your application bundle version (for example 1.0, 2.0). This appears as CFBundleShortVersionString in the associated info.plist file. See Apple developer documentation on CFBundleShortVersionString to learn more. |
Build | Enter the build number for this version of your app. This appears as CFBundleVersion in the associated info.plist file.See Apple developer documentation on CFBundleVersion to learn more. |
Mac App Store Validation | Enable this to ensure that your app only runs when it contains a valid receipt from the Mac App Store. This prevents people from running the game on a different device to the one it was purchased on. Only disable this setting if you have implemented your own receipt validation. |
Tick the Mac App Store Validation checkbox, then build your app (File > Build Settings… > Build).
Next, you need to create a GAMENAME.entitlements
file and save it in any location. The easiest way to do this is to create an empty Mac app. To do this, open Xcode, create a new project with a macOS template, go to the Capabilities bar and enable App Sandbox. This automatically generates a basic .entitlements file.
<?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/>
</dict>
</plist>
Note: Unity does not automatically update the info.plist file in versions 5.5 and earlier. Instead, you need to do this manually. See the Manual update section, below.
Open the info.plist file in Xcode (or any text editor), and add the following keys:
<key>LSApplicationCategoryType</key>
<string>{VALID APP CATEGORY, e.g.: public.app-category.kids-games }</string>
<key>CFBundleSignature</key>
<string>{4 LETTER CREATOR CODE, e. g.: GMAD }</string>
If you’re using Xcode 8.0+, you also need to add these fields to the info.plist file:
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
Next, fix read permissions on all the content in the .app. To do this, type the following into the macOS Terminal:
chmod -R a+xr "/path/to/GAMENAME.app"
Sign the .App with the .entitlements you created earlier. To do this, type the following into the macOS Terminal:
codesign -f --deep -s '3rd Party Mac Developer Application: DEVELOPER NAME' --entitlements "GAMENAME.entitlements" "/AppPath/GAMENAME.app"
Build the installer/pkg. To do this, type the following into the macOS Terminal:
productbuild --component GAMENAME.app /Applications --sign "3rd Party Mac Developer Installer: DEVELOPER NAME" GAMENAME.pkg
Finally, use the Xcode ApplicationLoader to submit your app.
If you’re using a Unity version older than 5.6, you need to add the bundle identifier and version string manually, after building your app.
Modify the following sections of the info.plist
file to make it suitable for your app:
<key>CFBundleDevelopmentRegion</key>
<string>{YOUR REGION}</string>
<key>CFBundleGetInfoString</key>
<string>{DESCRIPTIVE INFO}</string>
<key>CFBundleIdentifier</key>
<string>com.{YOUR COMANY}.{YOUR APP NAME}</string>
<key>CFBundleName</key>
<string>{YOUR APP NAME}</string>
<key>CFBundleShortVersionString</key>
<string>{VERSION NUMBER, e.g. 1.0.0}</string>
<key>CFBundleSignature</key>
<string>{4 LETTER CREATOR CODE, e. g.: GMAD }</string>
<key>CFBundleVersion</key>
<string>{VERSION NUMBER, e.g. 100}</string>
By default, Unity downsizes the icon image that you specified in Player Settings > Default Icons to generate an .icns file. This defines how your app’s icon appears in the macOS Finder and in the OS dock. However, you can replace it with a custom icon set if you want to.
CFBundleIconFile/Icon File
field) and place the following image names inside. Note that this folder must have the .iconset extension. icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
Make sure that the @2x.png
images are double the size stated in the file name. For example, the image 512x512@2x.png
contains an image that is 1024x1024. From the macOS Terminal, navigate to the directory where the .iconset directory is located, and enter the following command:
iconutil -c icns UnityPlayer.iconset
Finally, right-click the .app file and, select Show Contents, and replace the iconset.icns with the one you created earlier.
2017–05–18 Page published with editorial review
Updated features in 5.6
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!