Search Unity

An ad how often is ready?

Discussion in 'Unity Ads & User Acquisition' started by GabeGabe, Feb 3, 2015.

  1. GabeGabe

    GabeGabe

    Joined:
    Jan 4, 2015
    Posts:
    38
    Hi.
    My question is that how often it will show ads?
    I made a program with unity ads and there is a button what becaomes visible when advertisement.isReady() == true. How often will be visible? :D
     
    IgorAherne likes this.
  2. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    Unity Ads will return true for Advertisement.isReady() as long as the following conditions are all met:
    1. Unity Ads is Initialized
    2. Ads are available for the zone specified (or default zone when not specified)
    3. An ad is not shown twice in the same hour
    4. Less than the daily limit of 25 ads have been shown
    Unity Ads does take a few seconds to initialize, though. It also takes a few seconds to refresh the list of available ads after exhausting its existing list. And keep in mind, a country's advertising inventory will also affect availability.

    Basically, as long as ads are available, you should be able to show them as often as you like.
     
  3. Hagen

    Hagen

    Joined:
    Aug 16, 2014
    Posts:
    36
    Nikkolai,
    I have made a successful integration on my game, it runs fine in the editor, so I made a build for Android, with unchekin the debug build in build setting and chkecking the 'disable test mode' in the script.
    During my testing, several minutes passed and the Advertisement.isReady() never returned true, at least after playing for 3 minutes. So, does this means that Ads are not available for the specified zone? (does zone is the same as placement)?

    regards
     
  4. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    That's correct. At least for you.

    The availability of ads is also partially based on geographical location. Some countries have more fill than others. As a developer, it can be easy in some cases to burn through the available supply of ads.

    If you enable Development Build and enable all debug levels on the helper script, but leave test mode disabled, you should see ad request data with an array of available ads as a response from the ads server. If the arrays for your target zone are empty, there are no more available ads for that day. With test mode enabled, you'll see an array of 3 test ads available for video zones.
     
    Ishidres, Salazar and Hagen like this.
  5. instruct9r

    instruct9r

    Joined:
    Aug 1, 2012
    Posts:
    148
    Hello

    Sorry for getting in that thread, but i have one question that is pretty familiar to the discussion.

    1: Do we have to (somehow) reload / re-initialise ads, after one ad is watched, or we just have to keep checking for isReady()?

    2: Do we actually have to type 'false' in the initialisation, or we can just enter the ID of the game?

    thanks :)
     
    Last edited: Feb 19, 2015
  6. Salazar

    Salazar

    Joined:
    Sep 2, 2013
    Posts:
    235
    Hello instruct9r ,

    You can initialize unity ads framework once, its means you launch the game and initialize the network, than you cant initialize it again. So you should check with isReady(). Dont worry, Unity Ads Network handles isready.
    I think its a good practice to initialise ad network if there is a internet connection, i didnt test it yet but it feels so.

    Second question is about your script. If you input "false" to your initialization function, you tell the network that you are not using "test ads". If you input "true" you are using "test ads". Its a good practice to use Test Ads when developing the game. You will see a fullscreen ad in editor and a video ad if you test on a device.

    Code (CSharp):
    1. ////////////////////////////////////////////////////////////////////////////
    2. Advertisement.Initialize ("GameID",false);
    3. // test ads off
    4. ////////////////////////////////////////////////////////////////////////////
    5. Advertisement.Initialize ("GameID",true);
    6. // test ads on
    7. ///////////////////////////////////////////////////////////////////////////
    There is sample codes in this thread, this sample codes covers all best practices,
    and a simple integration video here.

    Regards,
     
    instruct9r and unity-nikkolai like this.
  7. instruct9r

    instruct9r

    Joined:
    Aug 1, 2012
    Posts:
    148
    Hi Salazar .
    Many thanks for the info.
    The second question i asked, because at first i used (true), for initialization, but the ads did NOT started, when i call them with a button. After that i have removed the second argument (So just the gameID) and the ads are getting called and playing just fine.
    So i guess i will just leave it as it is, with just the GameID and nothing else.

    thanks
     
    Salazar likes this.
  8. Salazar

    Salazar

    Joined:
    Sep 2, 2013
    Posts:
    235
    Hello again,

    If you use it with just GameID, you are using live ads.(default value of test ads is false) Using live ads may not helpfull when developing a new game. Because live ads are limited. It cant fill all day. On the other hand Test Ads fill limitless.


    Regards,
     
    instruct9r and unity-nikkolai like this.
  9. instruct9r

    instruct9r

    Joined:
    Aug 1, 2012
    Posts:
    148
    Thanks. Honestly i just needed to see them few times. I added them at the end stage of the game dev process.
    So i'll just leave it as it is, since the game is ready for publishing...

    Thanks for the help..
     
    Salazar likes this.
  10. Hagen

    Hagen

    Joined:
    Aug 16, 2014
    Posts:
    36
    Hi Nikkolai, I was satisfied with you response, however, I have been distributing my app for some testers and none of them is seeing ads can you please elaborate on how to "see ad request data with an array of available ads as a response from the ads server. If the arrays for your target zone are empty, there are no more available ads for that day."

    thanks.
     
  11. HakanOzcan

    HakanOzcan

    Joined:
    May 14, 2013
    Posts:
    41
    So, what is the strategy to limits rewarded ads? Ads are available frequently for some players from country A, however, only 1 or 2 ads available for some players from country B. How can I strike a balance for those two players? In may case, when I test my application with test ads, they are always available to me. When it comes to live ads, I see only one in a day if I am lucky.
     
  12. HeikkiTunkelo

    HeikkiTunkelo

    Unity Technologies

    Joined:
    May 13, 2014
    Posts:
    104
    Just to clarify Nikkolai's points so that there are no confusion:
    Number 3: is handled by our servers, so YOU can show as many ads in an hour as you like. We make certain that the same ad is not shown too often to the same user. (And it is a bit more compilicated than simple 1-hour rule)

    Number 4: The daily limit of 25 ads is in fact incorrect. We don't have a daily limit of 25 ads. We will give as many ads per user per day as we can (Terms and conditions apply, there is quite a bit background processing behind this).

    Cheers,
    Heikki
     
    nickeron and Salazar like this.
  13. HeikkiTunkelo

    HeikkiTunkelo

    Unity Technologies

    Joined:
    May 13, 2014
    Posts:
    104
    Separate answer on how many ads are available on different countries:

    The number of live-ads available on different countries varies (this is what is called "fill-rate"). So it normal for you to see a different number of ads in different countries. In "low-fill countries" it is a good idea to use test-mode during testing.

    There are multiple options how you can configure test ads :

    1. Client side
    You can use the source-option, where you build your game with
    Code (CSharp):
    1. Advertisement.Initialize ("GameID",true);
    Remember to turn this off, when you are pushing your game to App store or Google play.

    2. Server side setting:
    On the admin we have a new feature for configuring the test-mode in server-side. Go to Games -> Monetisation settings -> Advanced settings -> Ad test mode:
    Screen Shot 2015-03-04 at 12.06.38.png

    Cheers,
    Heikki
     
    Wylie-Modro and Salazar like this.
  14. HakanOzcan

    HakanOzcan

    Joined:
    May 14, 2013
    Posts:
    41
    I already use test ads. There is no problem with it. The problem will appear when I publish my game which is very soon. what kind of method should I follow to restric rewarded ads so that all people from all countries watch close amount of ads. To be clear, think that I have a counter and whenever this counter reaches zero, I give a video button to the user. For an American guy, this button will appear every time counter reach zero but for an Turkish guy it is already rarely available and plus I restrict even more buy putting a counter. @Salazar @unity-nikkolai
     
  15. Salazar

    Salazar

    Joined:
    Sep 2, 2013
    Posts:
    235
    Hello simsis3d,

    I solve this problem with implemanting other ad networks to fill it, actually I dont know how to use "mediation" for ad networks. Mediation is your keyword.

    Regards,
     
  16. fedecaccia

    fedecaccia

    Joined:
    Apr 5, 2015
    Posts:
    14
    Hi, i am new using Unity Ads. I am developing and add for Android. Should I limit the views per user per day in some way?
     
  17. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    It depends on how you want to use them. The most successful games in terms of eCPM tend to show 5 ads or less to each user per day.

    Users are limited to 25 ads per day per app. They are also limited to seeing the same ad only once per hour. Please keep in mind that the availability of ads is not guaranteed. This is why we provide methods to first check if ads are ready and can be shown.

    For most of Europe and North America, this typically isn't an issue. In countries where fill may be limited, the effects of this can be more obvious. For instance, if there are only 12 ad campaigns available in a user's country, they will only be able to see up to 12 ad campaigns per hour.

    In any case, if the user exhausts their daily limit of 25 ads, they won't see any more ads until the next day. This is a rolling 24hr limit for each of the 25 available ads.

    During development, it's recommended that you enable test mode to ensure you will always have test ads available.
     
  18. jeffsherwin

    jeffsherwin

    Joined:
    Aug 22, 2014
    Posts:
    47
    So I see a discrepancy about ads being throttled per user per day. Nikkolai says limit Heikki says no limit.
    Please clarify what is the actuality?
     
    tmalhassan and tddaniels like this.
  19. tddaniels

    tddaniels

    Joined:
    Mar 19, 2013
    Posts:
    5
    Also confused by the contradicting comments on the 25 ad per day limit. What does this actually mean? That a user only gets 25 ads per user per app per day and that on the 26th request nothing is filled? Or that they can only get 25 distinct ads and on the 26th it will recycle?
     
  20. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,913
    Does this mean a "view an ad to unlock a character" model is impossible with Unity Ads because the ads will stop?

    If you try to show an ad when they're not ready, will it still send ShowResult.Failed/Finished/Skipped for the resultCallback?
     
  21. DanjelRicci

    DanjelRicci

    Joined:
    Mar 8, 2010
    Posts:
    310
    It's possible indeed, Ads will always reset in 24 hours; if you run out of ads during a day, you can still watch them the day after. Anyways I never experienced limits: I'm playing Drive Ahead on iOS (which is using Unity Ads), and I managed both to see more than 25 ads per day and to see some Ads more than only once.

    I'm testing this just today, it always sends ShowResult.Finished even if the ad didn't show up. Also, for some crazy reason, Ads are never ready so I really can't test anything. On iOS I'm not even seeing the test Ad!
     
  22. simone9725

    simone9725

    Joined:
    Jul 19, 2014
    Posts:
    234
    Why if i turn internet Connection off the reward button add The reward without have a looking to the video?
     
  23. DivideByNil

    DivideByNil

    Joined:
    Dec 4, 2015
    Posts:
    15
    I am seriously confused about the 25 ad limit per day. Is it or is it not a hard limit?

    Heikki says, "The daily limit of 25 ads is in fact incorrect. We don't have a daily limit of 25 ads. We will give as many ads per user per day as we can (Terms and conditions apply, there is quite a bit background processing behind this)."

    But Nikkolai says, "In any case, if the user exhausts their daily limit of 25 ads, they won't see any more ads until the next day. This is a rolling 24hr limit for each of the 25 available ads."

    Does that mean EACH ad can be shown up to 25 times a day, or a hard cap on 25 ads per day, period?
     
    kopa47 likes this.
  24. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    can we please have clarification on this 25 ad limit please as how can we give reward ads to a user during gameplay if the ads will run out?
     
  25. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    @melonhead: Keep in mind that the availability of ads is not guaranteed. You should design your game in a way that doesn't cause a progression stopper if an ad is not available to be shown. In your code, you should check the value of Advertisement.IsReady for the specified ad placement before presenting the offer of watching an ad for a reward.
     
  26. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    sorry but this does not answer what is a simple question, is there a limit on the amount of ads that can be displayed per day while someone is playing a game? because if there is then how can we give rewards in game for watching the ads
     
  27. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    Yes there are limits. In your code, you should check the value of Advertisement.IsReady for the specified ad placement before presenting the offer of watching an ad for a reward. If there is no ad available, either due to reaching a limit or because of some network reachability issue, you should not attempt to show an ad.

    You only reward your players when they watch an ad from beginning to end. You can assign a method to resultCallback that accepts a value of type ShowResult. If the result is ShowResult.Finished, you can then reward your player.

    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. using System.Collections;
    4. #if UNITY_ADS
    5. using UnityEngine.Advertisements;
    6. #endif
    7.  
    8. [RequireComponent(typeof(Button))]
    9. public class UnityAdsButton : MonoBehaviour
    10. {
    11.     public string zoneId;
    12.  
    13.     #if UNITY_ADS
    14.  
    15.     private Button _button;
    16.  
    17.     void Start ()
    18.     {
    19.         _button = GetComponent<Button>();
    20.  
    21.         if (_button) _button.onClick.AddListener(delegate() { ShowAdPlacement(); });
    22.     }
    23.  
    24.     void Update ()
    25.     {
    26.         if (_button)
    27.         {
    28.             if (string.IsNullOrEmpty (zoneId)) zoneId = null;
    29.             _button.interactable = Advertisement.IsReady (zoneId);
    30.         }
    31.     }
    32.  
    33.     private void ShowAdPlacement ()
    34.     {
    35.         if (string.IsNullOrEmpty (zoneId)) zoneId = null;
    36.  
    37.         ShowOptions options = new ShowOptions();
    38.         options.resultCallback = HandleShowResult;
    39.  
    40.         Advertisement.Show (zoneId, options);
    41.     }
    42.  
    43.     private void HandleShowResult (ShowResult result)
    44.     {
    45.         switch (result)
    46.         {
    47.         case ShowResult.Finished:
    48.             Debug.Log ("Video completed. Offer a reward to the player.");
    49.             break;
    50.         case ShowResult.Skipped:
    51.             Debug.LogWarning ("Video was skipped.");
    52.             break;
    53.         case ShowResult.Failed:
    54.             Debug.LogError ("Video failed to show.");
    55.             break;
    56.         }
    57.     }
    58.  
    59.     #endif
    60. }
     
  28. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    thanks for the code really helped, is there an easy way to check for internet connection before trying to play an ad?
     
  29. olopez1

    olopez1

    Joined:
    Sep 13, 2012
    Posts:
    5
    Hi, I'm doing some testing of the unity ads in my game, and they are working different as described in this post. I'm showing the ad multiple consecutive times, and after 5 or 6 videos in a row, the ad doesn't display anymore. I
    thought that it was because of the hour/daily limits unity implemented in their ads, but I left the app active for more than a day to see if the "isReady" flag reactivated in that time. And it doesn't. The only way to make isReady true again was to close and open the app again. The behaviour is the same if I wait a day or just seconds. Am I missing a step to recover the isReady flag or is this a bug? For now I'm displaying a message that tells the user to restart the app, but I don't think that's good practice.
     
    zerocool-bit likes this.
  30. Alekxss

    Alekxss

    Joined:
    Mar 25, 2013
    Posts:
    170
    Im noticed that ADS system need 1-2 minutes on my Android device (Galaxy j1 mini), till isReady() begin to return true. Is there any issue to speedup initialization and make ADS working just from app start?
     
  31. harmeet123

    harmeet123

    Joined:
    Sep 19, 2017
    Posts:
    2
    hello guys

    how can i get array of ads in json format?
     
  32. Retaliation

    Retaliation

    Joined:
    Feb 10, 2021
    Posts:
    2
    In test mode, my ads are working but after publishing on the play store I cannot view my apps