HeyZap GameMaker Extension v3.2
Author: SilenGames
Download: YoYoGames Marketplace
Forum: GameMaker Community

FM, Fyber Exchange, HyprMX, MdotM SDKs aren't included to the extension. You can add it manually using "Update SDK" instructions.

Firstly please register your account on
Then you can use HeyZap Integration Wizard to setup the 3rd-party networks you want to use with mediation. Please don't forget to Add your app (with correct Android Package Name and iOS Bundle ID like com.yourcompany.yourgame) to HeyZap account. You cannot test unless you have Package Name/Bundle ID working.

Chartboost only! You need at least one Chartboost publishing campaign running to fetch and show Chartboost ads. You can create a publishing campaign on your Chartboost dashboard.

Admob and Facebook networks may have problems with showing ads before release on AppStore/GooglePlay so do not use this networks for testing this extension.

Clean build in GMS (F7) if you have any strange errors during compilation for Android or building for iOS in Xcode.

Android Setup

OS versions: Recommended settings on the date of release: NDK-r12b or NDK-r13b (GMS2: NDK-r16b), JDK 1.8.0_102 or 1.8.0_111 (GMS2: JDK 1.8.0_131), Target/Compile SDK 27, Min SDK 16, Build Tools 27, Support lib 27.1.1 . Please do not forget to update your Android SDK/NDK/JDK before compiling.

GMS Knowing Issue: for GMS 1.4 and GMS 2.2.1 and lower please do not forget to use solution from this article -

Google Play Services SDK is included in the extension. If you want to use "Google Play Services" extension from YoYoGames, please delete all strings from "Inject to Gradle" and "Inject to AndroidManifest (Application Level)" in "Google Play Services" extension properties on Android tab to avoid errors when compiling. You should do the same with "Google Analytics" extension if you want to use it.
Also for Google Play Services Extension v3.0.5 please delete "gson-2.7.jar" from "extensions\HeyZapExt\AndroidSource\libs" folder and add this string to "Inject to Gradle":
Google Play Services Extension v3.0.* contain a bug which should be fixed. Go to "\extensions\GooglePlayServicesExtension\AndroidSource\Java" folder and find "" file. You have two options:
1. For Google Play Services Extension v3.0.1 replace this JAVA file with new one -
For Google Play Services Extension v3.0.5 replace this JAVA file with new one -
2. Or edit JAVA file by yourself. Just add this code inside the class block.

AppLovin mediation requires you to manually enter the SDK Key to "HeyZapExt" extension properties -> Android tab -> Inject to AndroidManifest -> Application level.

Note: If you get compile error "OutOfMemoryError: GC overhead limit exceeded" please go to Preferences -> Android -> Java Max Heap Size -> Set to 2 or 4

iOS Setup

Xcode version: Use Xcode 9.* for compile. You can compile test build only for a real device (simulator will not work).

Download Framework! Due 50mb limit of max size of extension I cut all third-party frameworks for iOS from extension.
Please download ZIP with iOS frameworks here - (200Mb)
Place "iOSSourceFromMac" to "\extensions\HeyZapExt" folder.

3-rd party extensions! If you use other extensions be careful with "Inject to Plist" settings. Sometimes they may overlap each other. For example, if you use Facebook SDK Extension you should overwrite "LSApplicationQueriesSchemes" key in "Inject to Plist" in HeyZap or Facebook extension properties to prevent duplicate keys and build errors.

Pausing! iOS advertisment widgets do not pause the game automatically. So you need to take care of this yourself. You can use *_shown and *_hidden callbacks to pause and unpause your app and sounds.

Google Play Service! If you use "Google Play Service" extensions for Android, please do this:
1. Delete "iOSSource" and "iOSSourceFromMac" folders from "extensions\GooglePlayServicesExtension" folder
2. Delete all strings in "System Frameworks" and " 3rd Party Frameworks" in GooglePlayServicesExtension -> Properties -> iOS
3. Uncheck "iOS" platform in GooglePlayServicesExtension -> Properties -> General
4. Uncheck "iOS" platform in GooglePlayServicesExtension -> GoogleMobileAds.ext -> Properties -> Copies to

Banner will be destroyed and created again if you hide it and then change it position. Also if you change orientation from portrait to landscape (or vice versa) you should destroy banner and create it again to prevent incorrect positioning.


  • HeyZap_Init(HeyZap_Publisher_ID,HeyZap_Mode)

HeyZap_Publisher_ID (String):
Use your HeyZap Publisher ID here. You should initialize SDK with this function before using any other functions.
In Demo you should edit this function in Create event of "objControl" object.

HeyZap_Mode (Double):
0 - Normal mode with auto fetching. Interstitial ads will be cached automatically.
1 - Test mode. You can use a Mediation Test Suite to test each of the networks you've chosen.
2 - Normal mode with manual fetching. You should cache ads manyally.
3 - Amazon ads. Kindle Fire detection works automatically and covers most use cases. However, it is also possible for users with non-Kindle Android devices to manually install the Amazon Appstore and then install your Amazon app. To make sure that Heyzap will show Amazon ads in this case, you can use this mode.

Show Ads:

  • HeyZap_ShowInterstitial() - show interstial ads
  • HeyZap_ShowVideo() - show video ad
  • HeyZap_ShowReward() - show rewarded ad

Fetch Ads:

  • HeyZap_LoadInterstitial() - cache interstial ad if auto fetching disabled
  • HeyZap_LoadVideo() - cache video ad
  • HeyZap_LoadReward() - cache rewarded ad

Check Ads Status (return TRUE or FALSE):

  • HeyZap_InterstitialStatus() - interstial ad ready (or not)
  • HeyZap_VideoStatus() - video ad ready (or not)
  • HeyZap_RewardStatus() - rewarded ad ready (or not)
Warning! "Status" functions may not work properly. Using callbacks more reliable.

Banner Function:

  • HeyZap_AddBanner(POSITION) - show banner ad (need some time to load and display).

HeyZap_Banner_Top - show on top
HeyZap_Banner_Bottom - show on bottom

  • HeyZap_HideBanner() - hide banner ad. Use "HeyZap_AddBanner" function to show this banner again.
  • HeyZap_RemoveBanner() - delete banner ad
  • HeyZap_BannerGetWidth() - get banner width (works after banner loaded and showed)
  • HeyZap_BannerGetHeight() - get banner height (works after banner loaded and showed)

Warning! To show banner you must first set up Google Ads, Facebook Ads or InMobi in HeyZap dashboard.

Additional Functions:

  • HeyZap_Consent() - you can send user consent related to GDPR. Set 1 if consent was given from EU user or if this user is not EU user. Set 0 if consent was rejected. You can find an example of receiving consent in the Demo.
  • HeyZap_PauseExpensiveWork() - you can pause HeyZap service to prevent lags on old devices during active gameplay phase. Ads can not be loaded from internet after this. On iOS ads even can not be showed. This function is in BETA status, so use it on you own risk.
  • HeyZap_ResumeExpensiveWork() - resume HeyZap service after stop.


In Demo all callbacks placed in "Social" event of "objControl" object
Also you can use predefined scripts from Demo to set up callbacks.

Interstial ad callbacks:
  • "heyzap_ad_loaded" - Interstial ad loaded (or not). Script: HeyZap_Ad_Loaded
  • "heyzap_ad_shown" - Interstial ad showed (or not). Script: HeyZap_Ad_Shown
  • "heyzap_ad_hidden" - Interstial ad hided. Script: HeyZap_Ad_Hidden
  • "heyzap_ad_clicked" - Interstial ad clicked. Script: HeyZap_Ad_Clicked
Interstial ad callbacks:
  • "heyzap_video_loaded" - Video ad loaded (or not). Script: HeyZap_Video_Loaded
  • "heyzap_video_shown" - Video ad showed (or not). Script: HeyZap_Video_Shown
  • "heyzap_video_hidden" - Video ad hided. Script: HeyZap_Video_Hidden
  • "heyzap_video_clicked" - Video ad clicked. Script: HeyZap_Video_Clicked
Interstial ad callbacks:
  • "heyzap_reward_loaded" - Reward ad loaded (or not). Script: HeyZap_Reward_Loaded
  • "heyzap_reward_shown" - Reward ad showed (or not). Script: HeyZap_Reward_Shown
  • "heyzap_reward_hidden" - Reward ad hided. Script: HeyZap_Reward_Hidden
  • "heyzap_reward_clicked" - Reward ad clicked. Script: HeyZap_Reward_Clicked
  • "heyzap_reward" - Reward ad completed and user should be rewarded (or not). Script: HeyZap_Get_Reward
Banner ad callbacks:
  • "heyzap_banner_loaded" - Banner ad loaded and showed (or not). Script: HeyZap_Banner_Loaded
  • "heyzap_banner_clicked" - Banner ad clicked. Script: HeyZap_Banner_Clicked. Warning! Works for Android only.

Warning! Some ads don't return "*_clicked" callback. Do not use this callback for important events.

Warning! Some ads return "*_shown" callback after the closure of ads. Do not use this callback for important events.

SDK Versions

Date of update: June 15, 2018
GameMaker Studio - v1.4.1804
GameMaker Studio 2 - IDE v2.1.4.295, Runtime v2.1.4.218

Android SDK:
HeyZap - v9.21.0
AdColony - v3.2.1
AdMob - v12+
AppLovin - v8.0.1
Chartboost - v7.1.0
Facebook Audience Network - v4.27.1
InMobi - v7.0.0
IronSource - v6.7.9
Leadbolt - v8.1
Mopub - v4.15.0
Tapjoy - v11.12.2
UnityAds - v2.2.1
Vungle - v6.2.5

HeyZap - v9.21.0
AdColony - v3.3.0
AdMob - v7.31.0
AppLovin - v5.0.1
Chartboost - v7.1.2
Facebook Audience Network - v4.26.0
InMobi - v6.2.1
IronSource - v6.7.9.2
Leadbolt - v8.1
UnityAds - v2.1.1
Vungle - v6.2.0

Update SDK

You have opportunity to update SDKs by yourself.

iOS: 1. Firstly you should download new SDK from HeyZap Docs section (you will find the link below after selecting the network).
2. Open the SDK archive and find ".framework" folder. Extract it. If you can't see "Versions" folder go to Step 5. But if you can see "Versions" folder you should delete two empty files: "Headers" and file with the framework name.
3. Then go to "Versions\A" and copy "Headers" folder and file with the framework name.
4. Go back to the root of ".framework" and paste those files here.
5. Now archive your framework folder and place it to "extensions\HeyZapExt\iOSSourceFromMac" folder. Old framework ZIP archive should be removed.

Android: Firstly you should download new SDK from HeyZap Docs section (you will find the link below after selecting the network). Place new JAR or AAR files to "extensions\HeyZapExt\AndroidSource\libs. Old JAR/AAR files should be removed. Some SDK have "Libs" folder with additional JARs or folders with SO files. In this case you should place all of them to your extension's "libs" folder. Also you should check Android Manifest changes. Note: If you use Game Maker Studio 2, you should use JAR files, instead AAR. You can extract JAR from AAR archive and rename it.

To update Google Play Service just go to HeyZapExt extension properties -> Android tab and change version number in "Inject to Grandle" string.

You can find latest version number on Google Play Services Guides. Do not forget to update Google Play Services in Android SDK Manager before changing the version number.

Removal of unused SDK

You have opportunity to remove unused SDKs to decrease compile time and project size.

iOS: You should delete unused Framework ZIP archive from "extensions\HeyZapExt\iOSSourceFromMac" folder and remove this Framework name from "Extension Properties -> iOS -> 3rd Party Frameworks" list.

Android: You should delete unused Libs from "HeyZapExt\AndroidSource\libs" and remove related Manifest injection from "Extension Properties -> Android -> Application Level" window.


Extension v3.2.0 (15.06.2018):
- GDPR consent function added
- Android 6+: request for missing permission on startup
- New networks included: Iron Source, Mopub (android), Tapjoy (android)

Extension v3.1.0 (12.02.2018):
- HeyZap_PauseExpensiveWork() and HeyZap_ResumeExpensiveWork() functions added

Extension v3.0.2 (31.08.2017):
- HeyZap_HideBanner() function was added.
- Libs and Frameworks was updated.

Extension v3.0.1 (02.05.2017):
- GameMaker Studio 2 package was added.

Extension v3.0.0 (01.05.2017):
- Switching back to HeyZap SDK 9 without Fyber. The reason: Fyber have some problems and HeyZap officially recommended to use SDK 9 instead SDK 10.

presskit() template by Rami Ismail (Vlambeer)

© 2017 Silen Games. All rights reserved.