In this article

Free provisioning for Xamarin.iOS apps

07/16/2018

5 minutes to read

Contributors

In this article

Free provisioning allows Xamarin.iOS developers to deploy and test their
apps on iOS devices without being part of the Apple Developer Program.
While simulator testing is valuable and convenient, it is also essential to
test apps on physical iOS devices to verify that they function properly
under real-world memory, storage, and network connectivity constraints.

To use free provisioning to deploy an app to a device:

Use Xcode to create the necessary signing identity (developer
certificate and private key) and provisioning profile (containing an
explicit App ID and the UDID of a connected iOS device).

Use the signing identity and provisioning profile created by Xcode in
Visual Studio for Mac or Visual Studio 2017 to deploy your Xamarin.iOS
application.

Important

Automatic provisioning
allows Visual Studio for Mac or Visual Studio 2017 to automatically set
up a device for developer testing. However, automatic provisioning is not
compatible with free provisioning. In order to use automatic provisioning,
you must have a paid Apple Developer Program account.

Requirements

To deploy your Xamarin.iOS applications to a device with free provisioning:

The Apple ID being used must not be connected to the Apple Developer Program.

Your Xamarin.iOS app must use an explicit App ID, not a wildcard App ID.

The bundle identifier used in your Xamarin.iOS app must be unique and cannot have been used in another app previously. Any bundle identifier used with free provisioning cannot be re-used.

If you have already distributed an app, you cannot deploy that app with free provisioning.

If your app uses App Services, you will need to create a provisioning profile as detailed in the device provisioning guide.

Take a look at the Limitations section of this document
for more information about limitations associated with free provisioning,
and refer to the App distribution
guides for more information
about distributing iOS applications.

Under General > Identity, make sure that the Bundle Identifierexactly matches your Xamarin.iOS app's bundle identifier.

Important

Xcode will only create a provisioning profile for an explicit App
ID, and it must be identical to the App ID of your Xamarin.iOS app.
If they differ, you will not be able to use free provisioning to
deploy your Xamarin.iOS app.

Under Deployment Info, ensure that the deployment target matches or is lower than the version of iOS installed on your connected iOS device.

Under Signing, select Automatically manage signing and select your team from the drop-down list:

Xcode will automatically generate a provisioning profile and signing identity for you. You can view this by clicking on the information icon next to provisioning profile:

Tip

If there is a failure when Xcode attempts to generate a provisioning
profile, make sure that Xcode's currently-selected build scheme
targets the connected iOS device rather than a simulator.

To test in Xcode, deploy the blank application to your device by clicking the run button.

Xcode created this signing identity and provisioning profile and
stored them on your Mac build host. They are accessible to
Visual Studio 2017 since it has been paired
to the Mac build host. If they are not listed, you may need to restart
Visual Studio 2017.

Save and close the project properties.

Select your iOS device and run the app.

Limitations

Apple has imposed a number of limitations on when and how you can use free provisioning to run your application on an iOS device, ensuring that you can only deploy to your device:

Access to iTunes Connect is limited and therefore services such as publishing to the App Store and TestFlight are unavailable to developers provisioning their applications freely. An Apple Developer Account (Enterprise or Personal) is required to distribute via Ad Hoc and In-House means.

Provisioning profiles created with free provisioning will expire after one week, and signing identities will expire after one year.

Since Xcode will only create provisioning profiles for explicit App IDs, you will need to follow the instructions above for every app that you wish to install.

Provisioning for most application services is not possible with free provisioning. This includes Apple Pay, Game Center, iCloud, In-App Purchasing, Push Notifications, and Wallet. Apple provides a full list of capabilities in the Supported capabilities (iOS) guide. To provision your app for use with application services, visit the Working with capabilities guides.

Summary

This guide explored the advantages and limitations of using free provisioning to install applications on an iOS device. It provided a step-by-step walkthrough that demonstrated how to use free provisioning to install a Xamarin.iOS app.