In-App purchases in 4.18

That makes sense.

I’ve had zero success at getting the iOS Online Subsystem module to load. I just keep getting this. I don’t know how to fix it.


UATHelper: Packaging (iOS): LogModuleManager: Warning: No filename provided for module OnlineSubsystemIOS
UATHelper: Packaging (iOS): LogModuleManager: Warning: ModuleManager: Unable to load module 'OnlineSubsystemIOS' because the file '/Users/Shared/Epic Games/UE_4.18/Engine/Binaries/Mac/' was not found. 

[/QUOTE]

My studio’s game shipped with several IAPs. It was a lot of trial and error to get it to work, and referencing the Unreal Match 3 project.

Make sure you have an IOSEngine.ini file in your Config folder, in an IOS subfolder (path is */Config/IOS/IOSEngine.ini). I started with the IOSEngine.ini file that is in the Engine’s base Config folder (search for IOSEngine.ini in your Engine install). Then make sure these lines are added or updated (if they’re already in there):


    [OnlineSubsystem]
    DefaultPlatformService=IOS


    [OnlineSubsystemIOS.Store]
    bSupportsInAppPurchasing=true
    bUseStoreV2=false

bUseStoreV2=false is SUPER important. With it set to true, there’s an issue that causes all IAPs to fail; but setting it to false fixes that issue.

Also, in your project’s Build file (only available if you have C++ in the project):

Below where you add the Public Dependency Module Names, add this line:


    DynamicallyLoadedModuleNames.Add("OnlineSubsystemNull");

Then, below that add:
(note: the Private Dependency Module Names are for any modules you’re using on iOS, so your list might vary, but the important one here is “OnlineSubsystem”)
(second note: it’s my understanding that the Dynamically Loaded Module Names is required to make sure the iOS subsystem is loaded)


    if (Target.Platform == UnrealTargetPlatform.IOS)
    {
        PrivateDependencyModuleNames.AddRange(new string] { "Core", "CoreUObject", "Engine", "OnlineSubsystem" });
        DynamicallyLoadedModuleNames.Add("OnlineSubsystemIOS");
    }

And finally, uncomment the following line (or add it to the end of the constructor if it’s not already there):


    PrivateDependencyModuleNames.Add("OnlineSubsystem");

Lastly, make sure the following plugins are enabled:

Online Subsystem
Online Subsystem iOS
Online Subsystem NULL
Online Subsystem Utils

If I remember anything else I did, I’ll post it here. But that should be it.