AppLovin / AppLovin-MAX-Unreal

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error while building in unreal engine 4.27

awsproserve opened this issue · comments

MAX Plugin Version

1.1.2

Unreal Engine Version

4.27

Device/Platform Info

IOS

Current Behavior

I install the plugin to unreal engine and while trying to build the application I get the following error below. Been trying for all this week and still no avail, any help in the right direction would be greatly appreciated. Thanks - Sarah

image

Expected Behavior

The game/application should build successfully without error, and package successfully

How to Reproduce

  1. First lets down load the plugin. I navigate to the GIT repo, and download the plugin folder
    image

  2. Go to your downloads and find the folder we just downloaded and copy the plugin from the plugin folder
    image

  3. Put the applovin max plugin in your projects plugin folder
    image

  4. Find your [yourgame/appname].target.cs file within your project folder, open with text editor and add the following below

// Add compiler argument to support building on macOS with Xcode 13.3+
bOverrideBuildEnvironment = true;
AdditionalCompilerArguments = "-Wno-unused-but-set-variable";

image

  1. Add AppLovinMAX as a dependency to the PublicDependencyModuleNames array inside of your app’s .Build.cs file:

Add AppLovinMAX as a dependency to the PublicDependencyModuleNames array inside of your app’s .Build.cs file:
for example:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AppLovinMAX" });

Screenshot of me adding it to my app, our public dependency module name line is formatted by default different than yours, so I used it the way my project has it in in default with adding the applovin, input core, engine, and coreuobject. and I also tired it with your exact formate. see below
|
V
image

(I just noticed that after I save this file and re open it, my changes save to the run.build.cs file, however when I try to package the app, and it fails, I go back to the run.build.cs file and it reverts back to default, is that expected? see below for the default that it reverts back to

image

now I try it exactly the way you have it in your instructions, and tried building package and still not working. it still also reverts back to default when package fails.

image

  1. Update your app’s Info.plist in Unreal’s Project Settings with network-specific identifiers. See the SKAdNetwork documentation for instructions.

image

  1. Open your project, to go file > package > IOS

image

  1. After few seconds, I get the following error

to suppress this warning.
UATHelper: Packaging (iOS): Couldn't find PLCrashReporter in folder 'lib-Xcode-13.4.1', using default 'lib-Xcode-12.4'
UATHelper: Packaging (iOS): Compiling against OS Version 12.0 [minimum allowed at runtime]
UATHelper: Packaging (iOS): Parsing headers for run
UATHelper: Packaging (iOS): Running UnrealHeaderTool "/Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/run.uproject" "/Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Intermediate/Build/IOS/run/Shipping/run.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -absl
og="/Users/caataiwi/Library/Logs/Unreal Engine/LocalBuildLogs/UHT-run-IOS-Shipping_2.txt" -installed
UATHelper: Packaging (iOS): 2022-11-19 02:18:44.600 UnrealHeaderTool[80304:7868319] [UE4] Looking for binary: ../../../Engine/Programs/UnrealHeaderTool/Config/BinaryConfig.ini
UATHelper: Packaging (iOS): LogInit: Display: Loading text-based GConfig....
UATHelper: Packaging (iOS): Reflection code generated for run in 4.5829604 seconds
UATHelper: Packaging (iOS): Compiling with iPhoneOS SDK 15.5
UATHelper: Packaging (iOS): Zip file: /Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Binaries/IOS/run-IOS-Shipping.dSYM.zip
UATHelper: Packaging (iOS): Adding PostBuildSync action
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Runtime/AR/AppleAR/AppleARKit/Source/AppleARKit/AppleARKit_IOS_UPL.xml
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Marketplace/EasyAdsPro/Source/EasyAds/EasyAds_IOS_UPL.xml
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Marketplace/PsIronSource/Source/PsIronSource/IronSource_APL_IOS.xml
UATHelper: Packaging (iOS): IOSPlugin: ../../../caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Plugins/AppLovinMAX/Source/AppLovinMAX/AppLovinMAX_UPL_IOS.xml
UATHelper: Packaging (iOS): Writing manifest to /Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Intermediate/Build/Manifest.xml
UATHelper: Packaging (iOS): ERROR: Unable to merge actions producing AppLovinSDK.embeddedframework.extracted: prerequisites are different
PackagingResults: Error: Unable to merge actions producing AppLovinSDK.embeddedframework.extracted: prerequisites are different
UATHelper: Packaging (iOS): ERROR: Action graph is invalid; unable to continue. See log for additional details.
PackagingResults: Error: Action graph is invalid; unable to continue. See log for additional details.
UATHelper: Packaging (iOS): Took 9.091533s to run mono, ExitCode=6
UATHelper: Packaging (iOS): UnrealBuildTool failed. See log for more details. (/Users/caataiwi/Library/Logs/Unreal Engine/LocalBuildLogs/UBT-run-IOS-Shipping_2.txt)
UATHelper: Packaging (iOS): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (iOS): RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: AutomationTool was unable to run successfully.
PackagingResults: Error: Unknown Error
LogSlate: Window 'Output Log' being destroyed
LogSlate: Window 'Output Log' being destroyed

image

Additional note: When I remove the plugin and revert all my changes I made, I can successfully package the IOS and upload it to apples test flight.

If anyone can please help us with what we are doing wrong here. I want to note we have't yet implemented any blueprints or code specific to the plugin, we wanted to make sure that we can package the game after we installed the plugin to make sure nothing broke. Thanks in advance for any help you can provide. :)

Additional Info

No response

Hi @awsproserve, thank you for the detailed screenshots. I think this error may be due to the incorrect formatting in the Info.plist, since the added SKAdNetworkIdentifier items should be inside the array tag of SKAdNetworkItems, for example:

<key>SKAdNetworkItems</key>
	<array>
		<dict>
			<key>SKAdNetworkIdentifier</key>
			<string>...</string>
		</dict>
		<dict>
			<key>SKAdNetworkIdentifier</key>
			<string>...</string>
		</dict>
		<dict>
			<key>SKAdNetworkIdentifier</key>
			<string>...</string>
		</dict>
        </array>

You can also add the full SKAdNetworkItems into AppLovinMAX_UPL_IOS.xml if it's easier to format there

Hello @ritamsarmah you where right, when I tried to open up the info.plist file in Xcode, without opening in text, it threw me an error. I have used your suggested format and then it opened up successfully in Xcode. see screenshot below. I tried to build in iOS though and I got still the same error,

ERROR:

UATHelper: Packaging (iOS): AppLovin IOS Plugin found
UATHelper: Packaging (iOS): Couldn't find PLCrashReporter in folder 'lib-Xcode-13.4.1', using default 'lib-Xcode-12.4'
UATHelper: Packaging (iOS): Compiling against OS Version 12.0 [minimum allowed at runtime]
UATHelper: Packaging (iOS): Parsing headers for run
UATHelper: Packaging (iOS): Running UnrealHeaderTool "/Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/run.uproject" "/Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Intermediate/Build/IOS/run/Shipping/run.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -absl
og="/Users/caataiwi/Library/Logs/Unreal Engine/LocalBuildLogs/UHT-run-IOS-Shipping_2.txt" -installed
UATHelper: Packaging (iOS): 2022-11-21 12:52:49.242 UnrealHeaderTool[83952:8144251] [UE4] Looking for binary: ../../../Engine/Programs/UnrealHeaderTool/Config/BinaryConfig.ini
UATHelper: Packaging (iOS): LogInit: Display: Loading text-based GConfig....
UATHelper: Packaging (iOS): Reflection code generated for run in 6.2245425 seconds
UATHelper: Packaging (iOS): Compiling with iPhoneOS SDK 15.5
UATHelper: Packaging (iOS): Zip file: /Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Binaries/IOS/run-IOS-Shipping.dSYM.zip
UATHelper: Packaging (iOS): Adding PostBuildSync action
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Runtime/AR/AppleAR/AppleARKit/Source/AppleARKit/AppleARKit_IOS_UPL.xml
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Marketplace/EasyAdsPro/Source/EasyAds/EasyAds_IOS_UPL.xml
UATHelper: Packaging (iOS): IOSPlugin: Plugins/Marketplace/PsIronSource/Source/PsIronSource/IronSource_APL_IOS.xml
UATHelper: Packaging (iOS): IOSPlugin: ../../../caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Plugins/AppLovinMAX/Source/AppLovinMAX/AppLovinMAX_UPL_IOS.xml
UATHelper: Packaging (iOS): Writing manifest to /Users/caataiwi/Documents/Unreal Projects/KZ_4.27_Avatar_nov_17_max/Intermediate/Build/Manifest.xml
UATHelper: Packaging (iOS): ERROR: Unable to merge actions producing AppLovinSDK.embeddedframework.extracted: prerequisites are different
PackagingResults: Error: Unable to merge actions producing AppLovinSDK.embeddedframework.extracted: prerequisites are different
UATHelper: Packaging (iOS): ERROR: Action graph is invalid; unable to continue. See log for additional details.
PackagingResults: Error: Action graph is invalid; unable to continue. See log for additional details.
UATHelper: Packaging (iOS): Took 12.747466s to run mono, ExitCode=6
UATHelper: Packaging (iOS): UnrealBuildTool failed. See log for more details. (/Users/caataiwi/Library/Logs/Unreal Engine/LocalBuildLogs/UBT-run-IOS-Shipping_2.txt)
UATHelper: Packaging (iOS): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (iOS): RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: AutomationTool was unable to run successfully.
PackagingResults: Error: Unknown Error

image

screenshot of the error

image

Any other thoughts as to why im getting this error?

I noticed you have some other iOS plugins enabled, EasyAds, PsIronSource, etc. that could potentially conflict with our plugin—do you still encounter the issue after disabling all the other plugins? Have you also encountered this issue when trying to build our demo app?

I just disabled the applovin plugin to make sure its not an error with my application, and the iOS build was successful. let me disable the other plugins and remove thier code and see, will get back shortly

Hi @ritamsarmah I have disabled the other ad plugins, and it works now, thank you so much for your recommendations I was able to build IOS app successfully. Question, im looking at the blue prints from your sample project, im looking at all the blueprints, but im not seeing anywhere where I can ad a actual numeric banner id. Here are the blueprints im looking at

image

Im looking at the blueprints and I see where you can load, and show as per screenshot below, but where do I specify the numeric id at?

image

Also where is the banner ad going to be actually displayed? I dont see visually where it will show up. is this the placeholder for the banner ad? (as seen in the screenshot below?)

image

in summary,
1/ where do we specify the banner ad ids
2/ how can we visually place the banner ad on the screen? do we have control where the banner ad will show up, or will it show only at the top or the bottom of the screen, and if so how do we tell the banner ad where it should show itself.

The demo app currently only uses C++, so the actual functions being called are in BannerWidget.cpp. The blueprint functions in our plugin go by the same name as the C++ ones, so you'd be using Create Banner, which allows you to specify the ad unit ID and position.

You may like to check out our docs on how to work with banners, including the positioning options available: https://dash.applovin.com/documentation/mediation/unreal/ad-formats/banners

Many thanks, this was so very much helpful @ritamsarmah. We placed the blueprint code in our level blueprint by clicking the "open level blue print" as seen in screen shot section #1. The code we added to which is connected to a event begin play node as seen in section #2.

image

We where able to successful build the iOS file and load it into the App Store via testlight.
When we download the application from test flight, the app launches on the launch screen for 1 second then crashes. would you be able to help us as to why its crashing. the below screenshot shows the crash code from AppleConnect. I sent the log to Xcode and you can see below:

image

I first tried the blueprint with a create banner node and show banner node and recieved the crash. then I reread the documentation and saw its required to add a background. I've also added a extra delay just in case the banner hasn't loaded yet for me to show. and its still crashing. would you be able to know why. Thanks again in advance :)

Would you be able to provide any crash logs? Could you check that you're initializing the SDK before calling any of the banner methods? You'll need to wait for the SDK to initialize before creating or showing banners.

Hi @ritamsarmah you where correct, we where not initializing the SKD before calling the banner ad, That is now resolved. We ran into another issue. is there a way we can make a action happen AFTER the interstitial ad is called, whats happening now is the player dies, and after they die they can choose to be revived but they have to watch an interstitial ad when they hit the retry button. the problem is when the interstitial ad is displaying the game continues on to restart while the interstitial ad is going on. Using other plugins they exposed in blueprint a way where we can wait until the interstitial ad is finished/ closed, and then have the an action happen immediatlly after, ie the player comes back to life. Whats happening now is while the interstitial ad is going on, the player comes back and dies again before the interstitial ad I even finished.

here is how our current setup for the interstitial blueprint, pls let us know if we can add anything to implement this solution, many thanks and happy thanksgiving :)
image

here is an example of another plugin we used where it gave us the option to do a certain action, after the user closed the ad
image

do you have something we can do with applovin that is similar?

Currently we only support event callbacks via C++ (e.g., binding to delegates like UAppLovinMAX::OnInterstitialDisplayedDelegate), though full blueprint support is something we are actively working on and plan to release very soon.

Hi @awsproserve, if you'd like to test out a version of the plugin with blueprint support, the feature is available under this branch.

Wonderful, thank you so much @ritamsarmah I'll test this out and let you know. Is there release notes I can read to see what is new so I can compare, or is it the call back support for blueprint, just so I know what to test.

No release notes or docs yet, since that feature branch is still being finalized (and interface is subject to potential changes), but just wanted to give you the chance to try it out with your integration.

It includes a new AppLovinMAXDelegate blueprint class with dynamic delegates for each event. I'd recommend using delegates to determine when the SDK initializes before loading any ads and when ads finish loading before showing them. Here's a basic example for creating/showing a banner:

Screen Shot 2022-11-29 at 2 30 34 PM

Perfect, thank you, whats the best way to update the plugin, should I just delete the old one and reinstall?

Yep, that should work!

Perfect, thank you, whats the best way to update the plugin, should I just delete the old one and reinstall?

Hi. I see you also used EasyAdsPro. I'm currently using it. Why did you choose Applovin MAX? Is it better?

Perfect, thank you, whats the best way to update the plugin, should I just delete the old one and reinstall?

Hi. I see you also used EasyAdsPro. I'm currently using it. Why did you choose Applovin MAX? Is it better?

Because EasyAdsPro you have to use mediation with googleadmob, and I have alot of issues with google admob, well, not only me but if you just google the problems you run into with them its alot and painful, and there is no support what so ever from google. I was using meta directly before they converted to solely working with mediation partners, meaning you can't use them stand alone, so we plan to use meta audience network along with Applovin. So far our experience with Applovin has been wonderful. We had 64 apps running on meta before with no problem (native IOS and Android apps), when meta changed to only work with mediation parters we went to google admob and thats where we ran into alot of issues, so we are going to migrate all our apps to use applovin. Not many mediation partners support unreal engine as well, so this is great that they are compatible with unreal engine! Hope that answers your question, let me know if you have any others, would be happy to share my experience, as we have used alot of different services these past few years.

Yep, that should work!

wonderful trying this today, sorry been out sick, but im back today recovering slowly, will update you with my findings/experience.

Yep, that should work!

@ritamsarmah can you send me the link again/ give me access, when I try the previous link it give me error on that page. Thank you. this is the error I get

image

Oops, the branch got deleted since we just merged it in. You can test the plugin straight off the master branch.

Also as a disclaimer, the plugin on master still isn't an "official" versioned release, so we may make interface/name changes in the meantime until the next major version update (aiming for the beginning of next year). However, the functionality you need is all fully implemented. 😄

thanks for the heads up! diving into this right now! Many thanks for all your help and support!!!! A++++

Perfect, thank you, whats the best way to update the plugin, should I just delete the old one and reinstall?

Hi. I see you also used EasyAdsPro. I'm currently using it. Why did you choose Applovin MAX? Is it better?

Because EasyAdsPro you have to use mediation with googleadmob, and I have alot of issues with google admob, well, not only me but if you just google the problems you run into with them its alot and painful, and there is no support what so ever from google. I was using meta directly before they converted to solely working with mediation partners, meaning you can't use them stand alone, so we plan to use meta audience network along with Applovin. So far our experience with Applovin has been wonderful. We had 64 apps running on meta before with no problem (native IOS and Android apps), when meta changed to only work with mediation parters we went to google admob and thats where we ran into alot of issues, so we are going to migrate all our apps to use applovin. Not many mediation partners support unreal engine as well, so this is great that they are compatible with unreal engine! Hope that answers your question, let me know if you have any others, would be happy to share my experience, as we have used alot of different services these past few years.

Thanks for reply! I would like to know more about applovin and how to setup mediation there. Currently my game reached 2000+ downloads a day. The only reason I'm considering Applovin is Yandex Ads and Admob Bidding(it's performing very good, like 10-14$ eCPM even though my top countries aren't Tier1) support. My game's 5% audience is russians. Can we talk in discord? My username in Dicord

@ritamsarmah Hi, I can't seem to get the function called "Add AppLovin Max Delegate" how to I find this function, see screenshot.

image

I was able to setup everything else from your screenshot, except for the missing function for "Add AppLovin Max Delegate"
image

I also am checking the demo app and also can't find the "Add AppLovin Max Delegate" function.

image

Hm, so currently AppLovin MAX Delegate is a blueprint component that needs to be instantiated and attached to a blueprint class, for example of an Actor.

Screen Shot 2022-12-01 at 2 38 41 PM

Hi @ritamsarmah Thanks for the response, im not sure if I am doing this correctly, please let me know. so this is what im doing.

Step 1: Create Blueprint, and choose actor component
Step 2: I've named my blueprint AppLovinMaxDelegate
image
Step3: open the blueprint you just created, and create a function
image

Step 4: from he function type in Add Applov....
image

Result, I am not able to see the AppLovin Max Delegate from the function im creating, as you have in your screenshot, Am I doing this right,

Many thanks in advance you've great such amazing help so far!!! :)

I'll admit I'm not too well-versed in blueprints, but I think my approach would be to have a new or existing Actor blueprint class that handles the AppLovin MAX related code, and add the AppLovin MAX Delegate (which is already an actor component) to it.

Hi, sorry im alittle confused. im trying to see how to create the "AppLovin MAX Delegate", and what code AppLovin Max related code that you refer to above should go inside the "AppLovin MAX Delegate" function that im creating?

to clarify my question, see whats highlighted in teal blue boxes, that is the applovin max code,
image
so the question remains, what goes inside the AppLovin Max Delegate actor or function that im creating?
this screenshot above is the one you sent me, so im trying to see how can I create the AppLovin Max Delegate actor/function, and what do I put in it, since its not available by default when I search for it.

maybe you can send me your test file, and I can reverse engineer it from there to get the answer if that helps?

while packaging this latest plugin with the old configurations for initializing, banner, and interstitial, (the original instructions you gave me to create these, not the new ones because the new ones im missing the applovin max delegate actor/ function, but with the old configurations im getting red errors while packing the iOS package, starting with failed to initialize the plugin.

here are a few of the errors we have, not all of them but some of them, but I do believe they start with the first error below.

im guessing the old setup doesn't work no more and I need to conform with the new setup/configurations.

image

here are some other errors,

image

image

image

image

image

image

Hi @awsproserve, you may try clearing all your cached build/intermediate directories before re-compiling and see if that gets rid of the errors.

I also apologize for the confusion about the integration. I'm taking some time to create a better example and write out some clearer instructions, and will report back once it's ready.

HI @ritamsarmah thanks so much that would be very much appreciated. We'll wait on those instructions. we cleaned the intermediate directories and we still come across the same errors, im assuming the new plugin has another method to initialize the plugin which is causing the errors as we are currenlty using the original instructions/ configurations.

Perfect, thank you, whats the best way to update the plugin, should I just delete the old one and reinstall?

Hi. I see you also used EasyAdsPro. I'm currently using it. Why did you choose Applovin MAX? Is it better?

Because EasyAdsPro you have to use mediation with googleadmob, and I have alot of issues with google admob, well, not only me but if you just google the problems you run into with them its alot and painful, and there is no support what so ever from google. I was using meta directly before they converted to solely working with mediation partners, meaning you can't use them stand alone, so we plan to use meta audience network along with Applovin. So far our experience with Applovin has been wonderful. We had 64 apps running on meta before with no problem (native IOS and Android apps), when meta changed to only work with mediation parters we went to google admob and thats where we ran into alot of issues, so we are going to migrate all our apps to use applovin. Not many mediation partners support unreal engine as well, so this is great that they are compatible with unreal engine! Hope that answers your question, let me know if you have any others, would be happy to share my experience, as we have used alot of different services these past few years.

Thanks for reply! I would like to know more about applovin and how to setup mediation there. Currently my game reached 2000+ downloads a day. The only reason I'm considering Applovin is Yandex Ads and Admob Bidding(it's performing very good, like 10-14$ eCPM even though my top countries aren't Tier1) support. My game's 5% audience is russians. Can we talk in discord? My username in Dicord MadaraAlmighty#3477

just sent you a friend request via discord muzzy#6387 @NursultanNazarov

Here are the instructions I had for creating a new actor to implement the AppLovin MAX Delegate. I've also included the final blueprint for reference here: Bp_AppLovinMAXDelegate.uasset.zip

  1. Create a new Actor blueprint class that will implement the event callbacks.
  2. Under the "Components" tab, click "Add Component" and search for "App Lovin MAX Delegate". I also made it the root component by dragging it up in that component hierarchy.
  3. Right-click on the new component, go to "Add Event", and select the event to implement, e.g., "Add OnSdkInitializedDynamicDelegate". You can also add the event from the "Details" tab.
  4. Implement the necessary logic branching off the newly created event node. Repeat for other ad events as needed.
  5. This actor can then be spawned in your desired blueprint class. (Make sure you're also initializing the SDK somewhere)

Screen Shot 2022-12-05 at 6 29 03 PM

Screen Shot 2022-12-05 at 6 26 45 PM

In general, you'll want to listen for the OnSdkInitialized event before loading an ad (whether it is banner, interstitial, etc.), and listen for the corresponding On*AdLoaded event before attempting to show it. You should also listen to the On*AdFailedToDisplay to implement any retry logic/error handling as desired.

I believe you could try adding the AppLovin MAX Delegate component as just a variable in other blueprint classes and implement the events in a similar way, but this was the example I had time to get working. If you need further clarification or have other suggestions for better integration steps, feel free to let me know.

Many thanks for the instructions, question how do you get the little computer screen on the Event On initialized in the second screenshot, and what is its purpose?
image

After setting it up as you described above, with the exception of the little computer screen icon that im missing as stated above when packaging I still get alot of red line errors related to the plugin, stating its not initialized properly
starting with this error:

image

I have setup in my global instance a custom event to initialize when called as in screenshot below
image

and on my first level blueprint in my begin play event, I call the custom event "custom event applovin initialize"

the custom event for initializing is connected to the event begin play in my first level blueprint
image

thats how I initialized before with the previous version of your plugin

here is screenshot of my applovin delegate actor for reference

image

I'm not sure about the computer icon to be completely honest. I think it was a fluke mis-input during the screenshot, but it should not be necessary.

Did some further digging on the errors you mentioned—looks like this is actually due to us not providing default values for our USTRUCT properties (though I'm not sure why its not showing an error for me). I'll quickly fix that and let you know when its ready.

Hi @awsproserve, I've created a new branch with the fix for the errors you were encountering here: https://github.com/AppLovin/AppLovin-MAX-Unreal/tree/fix/default_ustruct_values

Would you mind trying that out (by copying the plugin from that branch) and letting me know if that fixes the issue?

Hello there @ritamsarmah thanks for uploading the new branch, im getting the same error. here are the errors im getting in the screenshots below, hope you have a wonderful day,

an a side note, thanks in advance for all your help. in getting this plugin to work, anything more we can do to help in this process please let us know

image
image
image

Hmm yeah that's a really weird one. I'm looking into it right now, but one possible cause might be if bitcode is enabled in your project (since the newer builds we've been working on in master no longer have bitcode enabled in the iOS plugin).

Could you try packaging after disabling that under Project Settings > Platforms - iOS > Build > Uncheck "Support bitcode in Shipping"? If that doesn't work, maybe you can try experimenting with the other options under the iOS build settings in the meantime while I also continue debugging it. I appreciate the patience and cooperation as we work out these issues—it's been equally helpful for us in order to improve the plugin!

image

Hello thanks for the prompt response, I've checked our setup and it looks like we do have this unchecked already, we'll continue playing around with settings to see if we can get this working, let me know when you want us to try another build of the plugin and we will get on it asap, thanks so much in your partnership.

image

Hi @awsproserve, would you mind pulling and testing the latest change in the fix/default_ustruct_values branch? I tried re-exporting the framework that Unreal is complaining about.

If that doesn't work, could you verify if you're seeing the issue occur in our demo app (from the fix branch) as well?

Hi @ritamsarmah I just updated using the latest fix/default_ustruct_values branch you updated around 40 mins ago. to my app and still the same errors. I've also done the same for the demo project and I am still getting the same errors. here are screenshots while I tried to package your demo app

image

image

We have also just updated our app using the old plugin file that worked originally and we are able to package successfully and see banner and interstitials in the game. (using the old working plugin)

Ah I think I found the reason why this issue happens. This seems to be because I compiled the latest version of the plugin with Xcode 14—which introduced those msgSend selector stubs and apparently prevents linking to the static framework with versions of Xcode 13 or lower. (Also why I probably couldn't reproduce this on my machine).

Could you see if upgrading to Xcode 14 fixes the issue? In the meantime, I'll look deeper into this and see whether maintaining compatibility with older Xcode is possible while we compile the plugin with the latest Xcode.

Hi @awsproserve, I was able to reproduce the errors you were seeing by switching to Xcode 13. I've added a re-compiled version of the framework in the same fix branch that should be compatible with Xcode 13 if you'd like to give it a try.

my apologies for the late folllow up, I've been traveling and hadn't got to it until today, Everything works PERFECT! YAY Thank you, thank you thank you! I implemented the banner example you gave me and it works. im now working on testing fail node for banner and implementing interstitial. will keep you updated on my further testing :)

Question, do we implement the interstitial ad code in the same AppLovinMaxDelegate code we have the banners in? in the blueprint below:

image

also would this be the right code to implement a retry to create and load banner when the original create and load banner fails?

image

Question, do we implement the interstitial ad code in the same AppLovinMaxDelegate code we have the banners in?

You could, though it's really up to you and the needs of your game if you want a new actor blueprint for separating out your interstitial logic. Here's a screenshot example you may use as reference for loading/showing an interstitial (including retries on fail with exponential delay):

Screen Shot 2022-12-19 at 1 50 58 PM

also would this be the right code to implement a retry to create and load banner when the original create and load banner fails?

Hmm, couple things we'd want to fix there:

  1. Are you using the logic in the second screenshot as well as the Bp_AppLovinMAXDelegate code? You only need to have one or the other, since they're both ways to bind to the events and create the banner.
  2. We also wouldn't want to have Bind Event to... the On Sdk Initialized and On Banner Ad Loaded events twice. The "Bind Event.." nodes connected with the white lines don't indicate chronological execution order; instead, the important part is the logic coming off the red "Event" box which says: "Here is the logic I want to be triggered every time the corresponding event occurs" (again this is equivalent to the method used in Bp_AppLovinMAXDelegate with those separate red event nodes). The current implementation would result in the logic being executed twice redundantly every time the delegate events are triggered.
  3. Banners already have auto-refresh, so if that is sufficient for your use case, then you don't have to worry about implementing a manual retry.

Question, do we implement the interstitial ad code in the same AppLovinMaxDelegate code we have the banners in?

You could, though it's really up to you and the needs of your game if you want a new actor blueprint for separating out your interstitial logic. Here's a screenshot example you may use as reference for loading/showing an interstitial (including retries on fail with exponential delay):

Screen Shot 2022-12-19 at 1 50 58 PM

Thanks so much for your response, question are these custom events that you are creating for the interstitial, I tried creating one but it looks alittle different. different meaning my event says custom event on it, and yours does not. see screenshot below:

purple box shows the custom event I created

image

the next screenshot here, shows me looking for the event you created on sdk initialized dynamic delegate. is this the way I should be setting these events up?

image

Hmm, couple things we'd want to fix there:

  1. Are you using the logic in the second screenshot as well as the Bp_AppLovinMAXDelegate code? You only need to have one or the other, since they're both ways to bind to the events and create the banner.
  2. We also wouldn't want to have Bind Event to... the On Sdk Initialized and On Banner Ad Loaded events twice. The "Bind Event.." nodes connected with the white lines don't indicate chronological execution order; instead, the important part is the logic coming off the red "Event" box which says: "Here is the logic I want to be triggered every time the corresponding event occurs" (again this is equivalent to the method used in Bp_AppLovinMAXDelegate with those separate red event nodes). The current implementation would result in the logic being executed twice redundantly every time the delegate events are triggered.
  3. Banners already have auto-refresh, so if that is sufficient for your use case, then you don't have to worry about implementing a manual retry.

as for my banner setup, I have a event begin play in my level blueprint "level blueprint called gangfembunny", that calls on an event I have in my global game instance to initialize the plugin.

image

here is the code in my global instance that initializes the plugin

image

after that I have it connected to the add applovin max delegate as seen in the screenshot below

image

this is screenshot inside the applovin max delegate

image

then I have all the binding stuff connected to the applovin max delegate

image

is this the correct setup, as this was the setup that you originally prescribed to me as seen in the screenshot of your recommendations below: I just want to make sure im understanding this correctly. many thanks in advance for all your help.

image

Thanks so much for your response, question are these custom events that you are creating for the interstitial, I tried creating one but it looks alittle different. different meaning my event says custom event on it, and yours does not. see screenshot below:

Not sure if there's a functional difference, but as long as you get it to work that's fine! If you're looking for the exact way I did it, I clicked on "AppLovinMAXDelegate" component in the left side and it shows all the events under "Details" on the right. You can click the green "+" button next to the event name to bind to it.

Screen Shot 2022-12-21 at 9 06 45 AM

is this the correct setup, as this was the setup that you originally prescribed to me as seen in the screenshot of your recommendations below: I just want to make sure im understanding this correctly. many thanks in advance for all your help.

The setup you have in your level blueprint seems good to me; however, you won't even need the Bp_AppLovinMAXDelegate in that case since it's just a different way to do the same thing. They're both implementing the same logic for creating a banner as you can see, so you only need to select one method that suits your needs.

Thanks so much, this was very helpful, I was able to set it up just as you did. the way I was doing was not right with custom event method.

One last questions.

so is this correct, that now that I have the interstitial delegate BP setup, so now all I have to do is spawn that delegate actor, and it will listen when I call show interstitial from another level?

So what im going to do is in my main menu, (called gangfembunny) I will call an event from my global instance as seen in the screenshot below to spawn the actor for the interstitial delegate
image

Then later on in another level I will call show interstitial. Is that the correct setup? or do I have to spawn the interstitial delegate in the same level that I'll be showing the interstitial ad?

also what delegates would I use in the screenshot below if:

User clicks the x during the interstitial ad and exits
Interstitial ad plays out and ends without user clicking the add. ie it naturally exits

The reason is because after the interstitial ad is done, I want to have it restart the level. So wanting to see which I should call on.

image

I just packaged app and tested it, it looks like when I implement this code in screenshot below, the interstitial ad looks like it only loads one time, and thats when I initially spawn the blueprint in my main menu, then the player goes into level 1 and dies and then calls to show the ad. and it shows. but then when the player dies again it doesn't show the ad any more, ie its not loading another ad after the initial show of the ad.

image

I added the two delegates below in the box, so the interstitial can reload after being displayed or clicked and its still not reloading

image

Your approach sounds good so far, though you shouldn't be loading after "On Interstitial Clicked" and "On Interstitial Displayed"—adding the load after "On Interstitial Hidden" is sufficient.

I'd suggest checking the device logs or adding a log after the events, namely On Interstitial Hidden and On Interstitial Loaded to check if the callback is being invoked or not. Another thing to check is if the next interstitial is not getting loaded in time, by adding a log statement to the False condition after Is Interstitial Ready.

Hi @awsproserve, just following up on this recent interstitial loading issue to see if you were able to resolve it? If not, we can continue the discussion over email, but I plan on closing this ticket out in any case since the original issue has been addressed.

Sounds great, feel free to email me at ritam.sarmah@applovin.com