Legacy Documentation: Version 4.6
Language: English
Apple Mac
iOS

How to deliver an application to the Apple Mac Store

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

  • Make sure you have the correct provisioning profiles installed in Organiser. Also check provisioning profile in System Preferences -> Profiles.

  • Create high res iconset. Make a folder named UnityPlayer.iconset (or whatever your info.plist is setup to show) with the following image names inside. Make sure the folder has 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 images are sized 2X the image the name says. So 512x512@2x is actually a 1024x1024 image with 144 dpi. From the Terminal, navigate to the directory where the .iconset directory is located and perform the command
    iconutil -c icns UnityPlayer.iconset
  • Create an info.plist and an GAMENAME.entitlements file. The easiest way to do this is by using http://jemast.com/unity/entitlements.php to generate them for you. You can also extract the info.plist from the Unity generated .app and modify that one. The most basic GAMENAME.entitlements looks like this, it will make sure your app runs in the Apple sandbox. This one has no iCloud support:
 <?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>
  if (Screen.fullScreen)
  {
      //MacBook Pro Retina 15: width = 2880 , MacBook Pro Retina 13: width = 2496 ?
      //could check device model name, but not sure now about retina 13 device model name
      //if last resolution is almost retina resolution...
      var resolutions : Resolution[] = Screen.resolutions;
      if (resolutions.length && resolutions[resolutions.length - 1].width > 2048)
      {
          Screen.fullScreen = false;
          yield;
          Screen.fullScreen = true;
          yield;
      }
  }
  • Enable UseMacAppStoreValidation toggle in the PlayerSettings
  • Run Unity and build the .app
  • Replace the iconset.icns with the created on in Step 2 by right clicking the .app and Show Contents
  • (Optional) Replace the UnityPlayerIcon in the .app with your own
  • Replace the info.plist in the .app with the modified one from Step 2.
  • Fix read permissions on all the content in the .app. In the Terminal type:
 chmod -R a+xr "/path/to/GAMENAME.app"
  • Sign the .App with the created entitlements from Step 3. In the Terminal type:
 codesign -f -s '3rd Party Mac Developer Application: DEVELOPER NAME' --entitlements "GAMENAME.entitlements" "/AppPath/GAMENAME.app"
  • Build the installer/pkg. In the Terminal type:
 productbuild --component GAMENAME.app /Applications --sign "3rd Party Mac Developer Installer: DEVELOPER NAME" GAMENAME.pkg
  • Submit using the ApplicationLoader! Make sure your application_id in iTunesConnect is in the waiting for upload state.
Apple Mac
iOS