Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by $$anonymous$$ · Mar 29, 2017 at 02:55 PM · androidunity 5adsdelegates

Heyzap Listener: delegate randomly becoming null at run time (Android)

I've "successfully" implemented ads with Heyzap. Right now I'm implementing callback routines for a "extra-life" mechanic based on ads.

The system works like such:

  • HeyzapAdsManager has 2 private delegates: successCallback and failedCallback. It also has a listener for the IncentiveAds Events

  • A GameManager calls HeyzapAdsManager.RewardVideo, sending a success callback and failed callback;

  • HeyzapAdsManager assigned those callbacks to it's private variables and call HZIncentvezeAd.ShowWithOptions (which shows an ad video)

  • The IncentiveListener is called normally, but when it has to call either the successCallback or the failedCallback, sometimes they are null, sometimes not...

I'm using Unity 5.4.3f1

Does anybody sees a flaw in this? I've been over this for hours...


HeyzapAdsManager

 public class HeyZapAdsManager : SingletonMono<HeyZapAdsManager> {
     
         public delegate void RewardVideoCallback();
         private RewardVideoCallback successCallback;
         private RewardVideoCallback failedCallback;
     
         protected override void Awake()
         {
             base.Awake();
     
             HeyzapAds.Start(Constants.HeyZap.PublisherID, HeyzapAds.FLAG_DISABLE_AUTOMATIC_FETCHING);
     
            ....
     
             HZInterstitialAd.SetDisplayListener(InterstitialListener);
         }

GameManager

 private void ExtraLife(bool video, int medalAmount)
     {
         if (video)
         {
             HeyZapAdsManager.instance.ShowRewardVideoAd(
                 Constants.HeyZapTags.EXTRA_LIFE_VIDEO, GrantExtraLife, GameOver);
 
             playerRevive.chosedToWatchVideo = true;
             playerRevive.VideoWatched();
         }
 ...
     }

HeyzapAdsManager - ShowAds and Listener

 public void ShowRewardVideoAd(string tag, 
         RewardVideoCallback success, RewardVideoCallback fail)
     {
         successCallback = success;
         failedCallback = fail;
 
         if (HZIncentivizedAd.IsAvailable(tag))
         {
             HZIncentivizedShowOptions showOptions = new HZIncentivizedShowOptions();
             showOptions.Tag = tag;
             HZIncentivizedAd.ShowWithOptions(showOptions);
         }
     }
 
 ....
 
 private void IncentiveListener(string adState, string adTag)
     {
         if (adState.Equals("incentivized_result_complete"))
         {
             Debug.Log("GIVE REWARD WITH TAG with tag: " + adTag);
             if (successCallback != null)
             {
                 Debug.Log("SUCESS_CALLBACK");
                 successCallback();
             }
             else
                 throw new System.Exception("Success callback is null!");
             FetchRewardVideoAd(adTag);
         }
         if (adState.Equals("incentivized_result_incomplete"))
         {
             Debug.Log("NOT give reward with tag: " + adTag);
             if (failedCallback != null)
             {
                 failedCallback();
             }
             else
                 throw new System.Exception("Failed callback is null!");
             FetchRewardVideoAd(adTag);
         }
     }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by $$anonymous$$ · Mar 27, 2017 at 06:46 PM

Ok, so I actually solved the problem... From a coding perspective there isn't nothing wrong... But was a problem with persistency among scenes...

HeyzapAdsManager was marked as "DontDestroyOnLoad" among scenes, and after a while I realize this problem didn't happened ramdonly, but only after the second time the level was loaded (menu -> game -> back to menu -> game)... After changing it to be destroyed and created at every scene creation the problem was solved...

Kinda crazy that happened though, could be related to how Unity unload/load scenes?

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

2 People are following this question.

avatar image avatar image

Related Questions

Unity Built in Android Ads 3 Answers

question about unity analytics 0 Answers

Unity Ads can not show more than 1 time after install game 0 Answers

Unity Error Script trying to use Chartboost 0 Answers

Chartboost adds are not showing up on android 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges