Using In-App Purchases on iOS


  1. Set up your in-app purchase in iTunes Connect:

    Google Play requires the id to be all lowercase, and it's best to have the ID for iOS and Android match for ease of Blueprint setup.

    image alt text

  2. Make a note of the ID you use, as well as if the item is consumable or non-consumable.

  3. If you have a Blueprint project, you're set to go. If you have a code project and have not already set up your project to use online subsystems, add the following block to your project's Build.cs file:

    if (Target.Platform == UnrealTargetPlatform.IOS)
        PrivateDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "OnlineSubsystem" });
  4. Edit [ProjectName]/Config/IOS/IOSEngine.ini:


Restoring Purchases

image alt text

To restore purchases, use the Restore In-App Purchases Blueprint node (or associated C++ function call). It only takes in the Player Controller, and returns an array of all the purchase information associated with that Player Controller. You can then process that array to compare against the particular Identifier (or Identifiers) that your gameplay logic needs.


You can test with a build that you load onto the device yourself, as well as with a build uploaded to iTunes Connect. Any users testing the purchase must be Internal or External Testers in iTunes Connect, and must have accepted that invitation. You'll also need your custom provision.