I have been scouring the internet / unreal forums trying to figure out how to successfully trigger an IAP for IOS in UE 5.4. I have set up everything on the apple developer / app store connect / xcode side properly to my knowledge. The issue however, does not seem to have anything to do with apple side config as it doesn’t seem to ever reach that point.
I will paste the myriad of forum posts citing similar issues I have looked over before posting this below. The summary is basically that no one can get this to work with the new “start an in app purchase” node for IOS (the make an in app purchase and make an in app purchase v2 nodes are deprecated according to the engine) due to the call needing some unique net ID that is always invalid, the same result happens when using the “read in app purchase information2” node:
Xcode logs when running the app and attempting these calls:
UInAppPurchaseQueryCallbackProxy2::TriggerQuery - GetUniqueNetIdFromCachedControllerId
UInAppPurchaseQueryCallbackProxy2::TriggerQuery - Invalid UniqueNetId
UInAppPurchaseQueryCallbackProxy2::TriggerQuery - Failed to even submit
I have not seen a single solution that did not involve manually editing / fixing these functions and compiling a custom engine version from source code, logging in first with game center, or abandoning the built in nodes and using a 3rd party plugin.
Some have found that logging in first with game center will result in a valid UniqueNetId, but this is not an option as one poster pointed out, requiring game center login for IAP does not comply with apples specifications and results in the app not even being publishable on the app store.
As others have mentioned, Epic seems to not give a rat about this issue and all of their IOS documentation is out of date. This modern mobile IAP documentation page only has a link for android specifics: Using In-App Purchases in Unreal Engine Projects for Mobile Devices | Unreal Engine 5.5 Documentation | Epic Developer Community
Is this really so difficult? I have wasted so much time with this issue and it is beyond frustrating that Epic doesn’t have better support and documentation for such a critical feature. Is there a single person who has gotten these nodes working without game center login in a modern precompiled UE version? I would really love to focus on developing my game instead of trying to fight and fix engine functionality.
This is my IOSEngine.ini from packaged project config:
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
AudioMaxChannels=16
[OnlineSubsystem]
DefaultPlatformService=IOS
[OnlineSubsystemIOS.Store]
bSupportsInAppPurchasing=true
bUseStoreV2=true;
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableGameCenterSupport=True
Any help is greatly appreciated and will probably be greatly appreciated by more than just myself.
Similar posts with no solutions for getting modern built-in IAP nodes working without game center login or 3rd party plugin:
https://www.reddit.com/r/unrealengine/comments/1e6iqu8/how_do_you_make_ios_in_app_purchases_work/