In App Purchase IOS

Dear Unreal Engine,

I tried to do some IAP for iOS but it’s not working and always fail.Return message when click on the Buy button is “Not Allowed”
Here’s my procedure.

All things setup in iTunesConnect, and provision and certificate. And i search some and added some lines to defaultengine.ini as well, and change iOSEngine.ini as well. But no luck. Below are my screenshot.

Please assist… really urgent…

Any updates on this? Really urgent

Test out creating a new blank BP project with no starter content, added those lines into defaultengine.ini, and the logwarning of unable to load module still there.

My mobile provision is developer provision and app is sign under explicit ID, not wildcard, will this affect it? Please advise soonest please… :frowning:

Hi dizzynoob,

Please review the following documentation:

Using In-App Purchases on iOS

If this does not resolve your issue, let me know what part of the documentation is lacking or unclear so that we can update it accordingly.

Thanks,

.

Hi , thank you for getting back!! I’ve search everything I can and added those lines in defaultengine.ini and even double check the iosengine.ini it’s all correct. And I even tried to disable the online subsystem iOS under plugin and restart and enable again and restart but still no luck. And during project startup it keeps showing the 2 Logmodules lines.

I tried to create an empty project as well, my app ID in settings are enable in-app purchase. All certificate genererated correctly and as well the developer provision. Still no luck as well for empty project.

On the side note, I tried to disable some online subsystem module it shows that particular module can’t be loaded. But then I re-enable and restart those message not showing anymore except the iOS one.

EDIT : I copied the iOS folder in engine (C:\Program Files (x86)\Epic Games\4.14\Engine\Config\IOS) to [ProjectName]/Config/ and double confirm the IOSEngine.ini is set right.

BY default in project/config the IOS folder with iOSEngine.ini is not inside.

iOSEngine.ini

[/Script/Engine.GarbageCollectionSettings]
gc.MaxObjectsInGame=131072
[Audio]
AudioDeviceModuleName=IOSAudio
; Defines a platform-specific volume headroom (in dB) for audio to provide better platform consistency with respect to volume levels.
PlatformHeadroomDB=0
[OnlineSubsystem]
DefaultPlatformService=IOS
[Advertising]
DefaultProviderName=IOSAdvertising
[DeviceProfileManager]
DeviceProfileSelectionModule="IOSDeviceProfileSelector"
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableGameCenterSupport=true
bEnableCloudKitSupport=true
[OnlineSubsystemIOS.Store]
bSupportsInAppPurchasing=True
bUseStoreV2=true
[SlateRenderer]
NumPreallocatedVertices=200
[LocalNotification]
DefaultPlatformService=IOSLocalNotification
[/Script/Engine.GarbageCollectionSettings]
gc.MaxObjectsInGame=131072

Still not working as well, show

LogModuleManager:Warning: No filename provided for module OnlineSubsystemIOS
LogModuleManager:Warning: ModuleManager: Unable to load module 'OnlineSubsystemIOS' because the file 'C:/Program Files (x86)/Epic Games/4.14/Engine/Binaries/Win64/' was not found.

This is my DefaultEngine.ini

[URL]
GameName=HeroesOfArk
[/Script/Engine.Engine]
+ActiveGameNameRedirects=(OldGameName="TP_ThirdPersonBP",NewGameName="/Script/HeroesOfArk")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPersonBP",NewGameName="/Script/HeroesOfArk")
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
bBuildForES2=True
bBuildForES31=False
MinSDKVersion=21
TargetSDKVersion=21
ApplicationDisplayName=HOA
bSupportsVulkan=False
[/Script/Engine.UserInterfaceSettings]
RenderFocusRule=NavigationOnly
DefaultCursor=None
TextEditBeamCursor=None
CrosshairsCursor=None
HandCursor=None
GrabHandCursor=None
GrabHandClosedCursor=None
SlashedCircleCursor=None
ApplicationScale=1.000000
UIScaleRule=ShortestSide
CustomScalingRuleClass=None
UIScaleCurve=(EditorCurveData=(PreInfinityExtrap=RCCE_Constant,PostInfinityExtrap=RCCE_Constant,Keys=((Time=1079.000000,Value=1.000000),(Time=1090.000000,Value=1.000000),(Time=2047.000000,Value=1.896200),(Time=2058.000000,Value=1.896200)),DefaultValue=340282346638528859811704183484516925440.000000),ExternalCurve=None)
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableGameCenterSupport=True
bEnableCloudKitSupport=False
bEnableFacebookSupport=False
BundleDisplayName=HOA
BundleName=HeroesOfArk
MobileProvision=hoa.mobileprovision
BundleIdentifier=com.hyuenentertainments.hoa
bAllowRemoteRotation=False
bUseRemoteAsVirtualJoystick=False
bSupportsIPad=True
SigningCertificate=iPhone Developer: Hao Liang Tan (548ZX5T4D8)
AdditionalPlistData=
bSupportsOpenGLES2=True
FrameRateLock=PUFRL_30
bSupportsMetalMRT=False
bSupportsMetal=False
MinimumiOSVersion=IOS_8
FacebookAppID=189613068172874
[OnlineSubsystem]
DefaultPlatformService=IOS
[OnlineSubsystemIOS.Store]
bSupportsInAppPurchasing=true
IsAllowedToMakePurchases=True
[/Script/MacTargetPlatform.MacTargetSettings]
-TargetedRHIs=SF_METAL_SM5
-TargetedRHIs=SF_METAL_SM4
+TargetedRHIs=SF_METAL_SM5
+TargetedRHIs=SF_METAL_SM4
+TargetedRHIs=SF_METAL_MACES3_1
[/Script/Engine.RendererSettings]
r.MobileHDR=True
r.MobileNumDynamicPointLights=4
r.MobileDynamicPointLightsUseStaticBranch=True
r.Mobile.EnableStaticAndCSMShadowReceivers=True
r.Mobile.DisableVertexFog=False
r.DiscardUnusedQuality=False
r.AllowOcclusionQueries=True
r.MinScreenRadiusForLights=0.030000
r.MinScreenRadiusForDepthPrepass=0.030000
r.MinScreenRadiusForCSMDepth=0.010000
r.PrecomputedVisibilityWarning=False
r.TextureStreaming=True
Compat.UseDXT5NormalMaps=False
r.ClearCoatNormal=False
r.ReflectionCaptureResolution=128
r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True
r.ForwardShading=False
r.VertexFoggingForOpaque=True
r.AllowStaticLighting=True
r.NormalMapsForStaticLighting=False
r.GenerateMeshDistanceFields=False
r.GenerateLandscapeGIData=True
r.TessellationAdaptivePixelsPerTriangle=48.000000
r.SeparateTranslucency=False
r.TranslucentSortPolicy=0
TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000)
r.CustomDepth=1
r.DefaultFeature.Bloom=True
r.DefaultFeature.AmbientOcclusion=False
r.DefaultFeature.AmbientOcclusionStaticFraction=True
r.DefaultFeature.AutoExposure=False
r.DefaultFeature.AutoExposure.Method=0
r.DefaultFeature.MotionBlur=False
r.DefaultFeature.LensFlare=False
r.DefaultFeature.AntiAliasing=2
r.StencilForLODDither=False
r.EarlyZPass=3
r.EarlyZPassMovable=False
r.DBuffer=False
r.ClearSceneMethod=1
r.BasePassOutputsVelocity=False
r.SelectiveBasePassOutputs=False
bDefaultParticleCutouts=False
r.AllowGlobalClipPlane=False
r.GBufferFormat=1
r.MorphTarget.Mode=False
vr.InstancedStereo=False
vr.MultiView=False
vr.MobileMultiView=False
r.WireframeCullThreshold=5.000000
r.SupportStationarySkylight=True
r.SupportLowQualityLightmaps=True
r.SupportPointLightWholeSceneShadows=True
r.SupportAtmosphericFog=True
r.SkinCache.CompileShaders=False
[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Game/Maps/MainMenu.MainMenu
LocalMapOptions=
TransitionMap=/Game/Maps/TravelMap.TravelMap
bUseSplitscreen=False
TwoPlayerSplitscreenLayout=Horizontal
ThreePlayerSplitscreenLayout=FavorTop
bOffsetPlayerGamepadIds=False
GameInstanceClass=/Game/Blueprints/AllLevels/HOAGameInstance.HOAGameInstance_C
GameDefaultMap=/Game/Maps/MainMenu.MainMenu
ServerDefaultMap=/Game/Maps/MainMenu.MainMenu
GlobalDefaultGameMode=/Game/ThirdPersonBP/Blueprints/ThirdPersonGameMode.ThirdPersonGameMode_C
GlobalDefaultServerGameMode=None
[/Script/HardwareTargeting.HardwareTargetingSettings]
TargetedHardwareClass=Mobile
AppliedTargetedHardwareClass=Mobile
DefaultGraphicsPerformance=Maximum
AppliedDefaultGraphicsPerformance=Maximum

Or should i even bother this message and go directly to package and test out? The way i test is i install ipa using IPP. is this the correct way? Please advise! Thanks!!

The screenshot of your Blueprints do not match those in the documentation and you did not provide screenshots for reading or restoring information so there may be a problem there, althought not necessarily.

Regarding testing, did you see this in the documentation:

Testing

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.

Do you meet the above criteria?

Lastly, did you read the information on the following two links:

Please be sure that you read and understand the contents of all of the links above so that you can provide a more precise description of where your In App purchases are failing to function.

Hi ,

I’ve read all the document regarding this. While testing the app after I install using IPP, the purchase button didn’t even response and only failed. Is reading and restoring information compulsory? I have all my provision set and is all valid following the iOS guidelines in unreal engine. Is the 2 lines of the iOS log module warning doesn’t matter as it seems like not loading the onlinesubsystem. Is it compulsory to upload the build IPA to iTunes connect to test using distribution provision and shipping packaging? Please advise. And I did setup the in-app purchase items and link to my app. But in make-in app purchase mode always go to failure. I’ll update all the screenshots of these .

I’m not positive if reading and restoring is mandatory; this is simply different from the tutorial and may make a difference. I would look at this last in the troubleshooting process.

Regarding the 2 lines in the iOS log: Make sure that Online Subsystem iOS is enabled in the plugins. This should take care of those two lines.

Regarding iTunes Connect, please see the solutions posted on the following Answer Hub posts:

In app purchase is failing for iOS

Problem with In-App Purchase

And make sure to check out the Apple link provided:

In-App Purchase Configuration Guide for iTunes Connect

Hi , regarding the 2 lines in log, the online subsystem iOS is already enabled in the plugin. I tried a few times creating a new blank project with all provision and cert valid. But still have those 2 lines. As I mentioned above if I try to disable other online subsystem rather than iOS, it’ll show the 2 lines as well but after I reenable back then the 2 lines gone Except the iOS even its enabled.

I’ve checked the 2 links you provided in latest post, both of it I’ve seen but no luck. As the “s” added behind support inside defaultengine.ini and iosengine.ini has been fixed in the release. So it shouldn’t be a problem. Just a quick question as you mentioned for testing I can load the IPA onto the device myself right. I install via IPP the game works flawlessly. But iap won’t work and keep showing fail in make-in app purchase node. Hope someone can help me…

Just to update my progress, I had tried added “Show External Login UI” successfully launched Game Center but the 2 log lines still show and I believe this is the cause of the IAP not working as it didn’t loaded the subsystem module even under plugin the online subsystem iOS is enabled. For best test, I tried package in shipping, for distribution checked and full rebuild, double check bundle Id matched with my explicit id, and as well product id is identical with the one setup in iTunesconnect. Download using TestFlight but in app purchase doesn’t work. Always on failure pin. Edited defaultengine.ini by adding the codes as above, and as well double check the iosengine.ini, all is correctly spelled. On the side note, the iosengine.ini is not located in project/config/iOS anymore as mentioned in documentation. It already moves to plugin folder. Perhaps can you try create a blank project and test it out by adding the onlinesubsystem code in defaultengine.ini, it might not gonna load and 2 lines will show during startup and package. I tried download fresh copy of unreal engine on the other machine, same as well by creating blank project, is it a bug in the latest release? As I’m already on this issue for more than a week… desperate… tried everything. I can package my test project if you need it. Please advise.

Hi , I attached a few more screenshots for your reference.

As you can see, the Product ID as in variables value is “5000ro”, in iTunesConnect is the same as well. and in project directory, I’ve copied a copy of iOSengine.ini from Engine folder to my project directory as i saw the link you sent me

Edit [ProjectName]/Config/IOS/IOSEngine.ini:, as in default, it’s not there.

On the other hand, “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:”

Does this means that if i have a BP project i don’t have to setup anything including adding codes to defaultengine.ini? As now i’m trying another attempt, go back to basic, package in shipping, distribution, and in defaultengine.ini i’ve remove the

[OnlineSubsystem]
DefaultPlatformService=IOS

and even the

[OnlineSubsystemIOS.Store]
bSupportsInAppPurchasing=true

, and of course, the 2 logs line disappear, then i’ll upload via application loader and try again using Testflight. Will Update again whether this works which means i’ll need to do nothing in defaultengine.ini, but i had make sure in iOSEngine.ini in Engine Config folder had these lines.

UPDATE : After tried packaging and downloaded from iTunesConnect, still failed at the IAP. So the scenario i tried now is in DefaultEngine.ini there’s no added lines( since i added those codes doesn’t work as well and showed 2 log lines which OnlineSubsystemiOS cannot be loaded even plugin is enabled), copied iOSEngine.ini from Engine to project folder(As shown in documentation), packaging is set to shipping and distribution, using all distrubution provision and cert, not working at last! ShowExternalLoginUI works at Main Screen by login GameCenter.**

Any updates on this…? Really urgent…

FINALLY! It’s solved by removing all “Extra” codes which not suppose to be added in DefaultEngine.ini, and as well shouldn’t copied the iOSEngine.ini from engine to project folder as well as stated in Documentation which is wrong. Please fix it. Now everything works. And as well, in iOSEngine.ini need to change from :

[OnlineSubsystem]
DefaultPlatformService=MCP (BY DEFAULT INSTALLATION OF ENGINE)

[OnlineSubsystem]
DefaultPlatformService=IOS