iOS 10.0 and Xcode 8 compatibility

App Store submissions

  • in case you have to ship your app within couple of next weeks please keep using Xcode 7.3 for that. At the moment it provides smoother experience.

  • in case you have to use Xcode 8 here couple of advises, which should help you:

  • if your application depends camera (WebCamTexture API) you have to specify reason why this feature is being used in Info.plist located in Xcode project Unity generates. Add there NSCameraUsageDescription key with string value containing the description. (This will be exposed in Player Settings for Unity 5.4.1p1, expected to ship on 14th of September).

  • if your application doesn’t use WebCamTexture API you need to disable camera code in Xcode project Unity generates. This is temporary measure until we ship automatic fix next week (~21st of September). Open Classes/Unity/CameraCapture.mm in generated Xcode project, go to the first line and replace “#if !UNITY_TVOS” and with “#if 0”. This will effectively remove camera capture code and you should pass automatic submission check.

Quick summary on other iOS 10.0 and Xcode 8 compatibility aspects

  • latest Unity 5.3 and 5.4 patches (like 5.3.6p4 and 5.4.0p4) should work just fine for development.
  • older Unity versions will mostly work, but some inconveniences might be expected.

More detailed overview

  • Xcode 8 Build & Run works in 5.3 and 5.4 Unity versions since middle of July. Though there is inconvenience that by default Xcode project doesn’t have your team selected and thus it would fail to sign project. Selecting it once and then appending project makes it work. We are working to allow you specify team id in Player Settings. This improvement should land in Sep 14 patches. We aim to make it more automatic in the future.
  • Xcode 8 Simulator builds should work with latest 5.3 and 5.4, but might crash with older Unity versions.
  • iOS 10.0 now requires to specify reason for camera, microphone and location access. We added fields for that in Unity 5.4 and later. (Will ship in patch release on Sep 14). For older Unity versions postprocessing script that updates Info.plist is advised.
  • iPhone 7 and 7+ device enum entries were added. Will ship in Sep 14 patches.
  • target OS version enum was also updated to include latest iOS versions. Will ship in Sep 14 patches.
  • ReplayKit broadcasting API is in the works, will ship bit later. (Unity 5.5 and probably to be included into 5.4 patch too).

Edits: submission section added, dates updated, reformatted

2 Likes

Great News! When you say ReplayKit is in the works, mean 5.4, 5.5 or even later?

ReplayKit Recording is already part of 5.4: https://docs.unity3d.com/ScriptReference/Apple.ReplayKit.ReplayKit.html
ReplayKit Live Broadcasting we will be adding for 5.5, but it’s also considered to be backported to 5.4, but decision isn’t final yet.

1 Like

Will all this ship in 5.4.1 patch 1? as we got the 5.4.1 release.
Need to know a date next week so can plan on upgrading App.
Thank you.

Yes, it will be 5.4.1p1.

In Unity 5.4.0 and 5.4.1 deviceToken is not received after calling RegisterForNotifications and there is no registrationError. Please fix this problem cause remote notifications is not working after upgrade from version 5.3.6

I asked QA to look into your case with priority.

Might be good to know for some people: In my experience building for iOS using the 5.5 beta 3 and Xcode 8 does not work.

Do you have more details what does not work? We are regularly testing 5.5 beta against Xcode 8 and didn’t notice any major issues.

Do you know when the iOS 10 patch be out this week, today or tommorow?

P.S. I know one this they changed in Xcode that may produce errors: The use of “@” for example in icon names…

5.3 and 5.4 patches are scheduled for Wednesday.

Could you please provide more details/examples on issue you mentioned? I’m not sure we noticed anything unusual in this area.
Thanks!

I updated original thread post with submission information and expected dates.

I’m using everyplay. I guess that is why i saw two new entries in the info.plist, and why a friend of mine had a pop up saying that the Everyplay SDK is expired on his iOS 10 device. (I compiled it with the older SDK than the current one.)

@michaeltepl

There is a discussion going on here about the push notification regression. The information Omar provided might work in a pinch (I created my own custom PostProcessor to handle the change, but his hacky solution seems less hacky than mine so I might switch to that for the time being).

There is an open bug for this issue but your guess is as good as mine regarding if/when it’ll be fixed.

Everyplay issue is separate one and should be fixed by upgrading Everyplay SDK to latest.

Well it doesn’t give me that popup with the latest Everyplay version in the asset store. (Xcode 8 and iOS 10. i updated before i saw this post.)

@Mantas-Puida

Setting Application.targetFrameRate = 60; throws this error upon app launch on device : "invalid mode ‘kCFRunLoopCommonModes’ provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. "

Xcode 8, Unity 5.3.6p4 on both iphone 6s plus and ipad air 2 with iOS 10.

Repoducable with empty project, leaving project at 30 fps seems ok.

how about unity 4.x version? Is this version possible to build ios project with xcode8?

These are the other fields you must add to your Info.plist, so your binary does not get rejected:

NSCalendarsUsageDescription
NSPhotoLibraryUsageDescription

Just use arbitrary strings, if you are not using them.

1 Like

Don’t know if it’s related to this subject, if not, sorry. What’s the current status of http links, do we have to use https link in game? If we use http, will it be rejected?