16

I have an app that I'm going to put in the Mac App Store. I'd like to add iCloud support for preference syncing, and for that reason, I'd like to distribute the betas signed in such a way that they can access iCloud.

However, I haven't been able to find anything in the Mac documentation library about distributing an app, signed with a distribution key, outside of the App Store, and being able to access iCloud.

So far, my attempts to distribute such an application have met inability to launch on testers' machines, with messages in the Console complaining about the app having the iCloud entitlement.

Is what I'm after possible, or should I abandon iCloud support? If it is possible, what do I need to do to make a distributable, iCloud-capable build?

Edit: To be clear, you can replace “iCloud support” in this question with any other feature that is only available to App Store apps. I mention it to establish that the solution is not “just distribute it unsigned”. iCloud is the goal in my specific case; I'm asking about the general process.

Peter Hosey
  • 95,783
  • 15
  • 211
  • 370
  • Strictly speaking, the question isn't about iCloud support; I mention that only because the solution is not “just distribute it unsigned”. Any feature that a non-App-Store app could not have would result in the same question. – Peter Hosey Nov 18 '11 at 22:13

2 Answers2

6

You would need to gather the UUID for the tester's mac, either available via Xcode's Organizer or you can also access it via Apple System Profiler under the hardware overview. After adding it to the developer portal you'd generate a provisioning profile.

In order for them to actually run the application they would need to make use of an iTunes Connect test user account. This is one of two types of accounts that you can create in iTunes Connect, the other being an account with privileges (financial/technical/etc) for your developer membership. The test user account is needed in order for a receipt to be generated and the application actually run. Though you might be able to sidestep the test user account requirement by not actually validating receipts at that phase of development.

If you want to do iCloud or Push you need the UUID. If you want to test a MAS app that doesn't need iCloud or Push, but does do receipt validation you need only the test user account.

rudy
  • 1,702
  • 11
  • 14
  • I was wondering if there are any updates on this topic? Also, would it be possible to create a test user/iCloud account on the home system to test - at least initially. – ICL1901 Nov 20 '12 at 02:07
  • as far as i'm aware nothing has changed. The test user account is not a local account, its the same as an Apple ID with the exception that its not intended to be used with public apple services. and if you do use it with a public apple service it will cause it to not be a sandbox/test account anymore. – rudy Nov 21 '12 at 18:05
  • Thanks Rudy, what about different Apple IDs on same device? – ICL1901 Nov 21 '12 at 23:28
  • 1
    sure, you just login/logout in App Store.app when you need to switch between your real account (the one you purchase content with) and the test account (created at itunesconnect.apple.com) – rudy Oct 28 '13 at 05:03
1

My iCloud Mac app is stil in development, so I didn't try yet. But isn't it possible to sign the app with an entitlement and add a test user to iTC. In the OS X provisioning portal you can already add devices, and you need to add the testers Macs there and re-create the provisioning profile afterwards. After build & archive you "Share..." the app as installer or .app. The user needs to login with the/his test user you created in iTC on her/his Mac.

Christian Beer
  • 2,027
  • 15
  • 13
  • How would my testers (assuming they're not all programmers) get the UUID in order for me to enter into the Portal? Also: “The user needs to login with the/his test user you created in iTC on her/his Mac.” Could you elaborate on this, please? – Peter Hosey Nov 19 '11 at 06:16
  • You can get the UUID from the command line using `system_profiler | grep 'Hardware UUID'` or you (they) find it in the system overview. As soon as the user starts your app, he/she gets asked to log in. – Christian Beer Nov 21 '11 at 07:43
  • 1
    I created a small Apple Script that copies the devices UUID into a mail: https://gist.github.com/1385714. You can also save it as an application and send to your testers after you changed the mail address and added some text to the mail. – Christian Beer Nov 22 '11 at 13:57