Search Unity

How to have your iOS app reviewed by Apple with Unity Ads inside ?

Discussion in 'Unity Ads & User Acquisition' started by lugduweb, Dec 11, 2014.

  1. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Hello, I have the following problem with Unity ads and I don't see how I can solve it:

    I would like to publish a free version of my IOS app ("My App") as a new app ("My App Free").
    This iOS application shows an ads when you click on "new game" button which is only available if advertisement.isready returns ok. So if no ads ready, the app should not be working (to avoid wifi off or any user hack to remove ads without buying the app).
    "My App Free" works fine in test mode with test window on mac or pc dev computer.
    But then there is something a bit silly to make it work on iOS device because of the following :

    To show ads ( test off), the app must be completely registred in Unity Ads or it does not work.
    The Unity registration process needs a valid appstore link (isready returns false if testmode is false)
    To have a valid appstore link, the app must be reviewed by Apple first (but will be rejected as ads will not be working yet)

    So what can I do ?
     
  2. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    You don't need to have your game profile registered to a live app in order to see live ads in your game.

    You mention having test mode enabled and being able to see place holder ads in the editor. Have you attempted to run the app on your device with test mode enabled? You should be able to see sample ads in any case.
     
  3. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Hello nikkolai, thanks for your reply, here is the behavior on my iPhone5S (4G) real device:
    -Test Mode=true blue sample ads shown
    -Test Mode=false no ads are shown at all and the game starts immediately

    But if I want to publish it on the App Store, Test Mode should false right ?
     
  4. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    What type of ads are you showing? Are these picture ads or video ads?

    We have plenty of video ads to show. However, picture ads are still in beta. For the moment, there are no picture ad campaigns available for most countries.

    I recommend you use the defaultVideoAndPictureZone to show video ads, with the option of picture ads as backfill if they are available. Unless you are choosing to reward users for watching video ads, then use the rewardedVideoZone, which does not have picture backfill as an option and is not skippable.
     
  5. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    And you are correct, test mode should absolutely be false before submitting to the app store. You will not be able to monetize your game while test mode is enabled.
     
  6. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    pictureZone
    I try defaultVideoAndPictureZone right now and tell you if it works
     
    unity-nikkolai likes this.
  7. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    OK, I've just tested and it works !
    Thanks for help.
    Btw: It did not work when I first called the method (maybe ads were not yet ready)...
     
  8. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Sample code for 3rd party readers:

    private bool ShowZone(string zoneid)
    {
    if(Advertisement.isReady(zoneid))
    {
    ShowOptions so = new ShowOptions {
    pause = true,
    resultCallback = result => {
    Debug.Log(result.ToString());
    }
    };
    Advertisement.Show(zoneid, so);
    return true;
    }
    return false;
    }

    public void Show()
    {
    if(!ShowZone("pictureZone"))
    {
    ShowZone("defaultVideoAndPictureZone");
    }
    }
     
  9. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    Possibly... Might consider putting a Debug.Log() statement in your ShowZone() method, just before you return false. Something that indicates that the zone ID specified was not ready. Just to avoid the guessing game.

    I do like how you've combined the isReady() and Show() statements into a single method. I might end up doing the same with the helper script example.

    Glad that works for you now. Let me know if you have any further questions. Thanks!
     
  10. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Thanks for the debug log tip.
    I found out that I try to show ads (standard start() method) before it receives the "config" response (my class is instantiated in awake)...
    Is it possible to setup and call a callback when ready/configured ?
     
  11. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    I use something like this to do that. Basically, you're waiting and testing isInitialized and isReady each frame until you're either able to show ads, or the wait timeout is reached.
     
  12. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    I finally used your two c# scripts which are a lot greater than mine.
    I just added a bool to enable/disable ADS in all application so I can target IOS / IOS Free app with the same code.
    I don't know if there is a way to have two IOS build targets with different flags setup, that would be cool.
    Thanks for support.
     
    unity-nikkolai likes this.
  13. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    Yep, that's how you have to do it. I usually write a platform manager for each game I make that handles platform specific options. There are a few packages in the Asset Store that tackle this problem. Worth at least taking a look at.
     
  14. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Hello, one more question still with Apple review process : when you push your Unity Ads powered app for review, it asks if it uses "IDFA". I think I don't need to check this option. Am I right ?
     
  15. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    Actually, you do need to check that one.

    How to answer the following ad questions when submitting your app to the iTunes store:
    1.Does this app use the Advertising Identifier (IDFA)? YES

    If so, does it use it to:
    2. Serve advertisements within the app? YES
    3. Attribute this app installation to a previously served advertisement? YES
    4. Attribute an action taken within this app to a previously served advertisement? NO

    If ads are not shown within the first few minutes of gameplay, you may need to make note of exactly when and where the ads are shown. The review team needs to be able see ads in your game when they review the submission.
     
  16. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    Thanks again for reply
    But, too bad I've answered No but in the comments I've mentioned that the app uses Unity Ads and when they are shown.
     
  17. unity-nikkolai

    unity-nikkolai

    Joined:
    Sep 18, 2014
    Posts:
    540
    That's okay. If you're not able to withdraw the submission, they'll reject it this time around. Just resubmit again with the answers above. Shouldn't have a problem the next time, through.
     
  18. lugduweb

    lugduweb

    Joined:
    Mar 2, 2014
    Posts:
    50
    They rejected my non Free app twice then, I complained and it was ok 1h later...
    So I keep confident this time for the Unity Ads version.
    Thanks !
     
    unity-nikkolai likes this.
  19. timcommandeur

    timcommandeur

    Joined:
    May 14, 2013
    Posts:
    4
    A new question was added. Does unity ads take this into account?

    EDIT: For SEO purposes I will paste the question as text as well:

    Limit Ad Tracking setting in iOS

    [] By checking this box, you confirm that you (and any third party with whom you have contracted to serve advertising) will check a user’s Advertising Preference (as defined in the Apple Developer Program License Agreement (“PLA”)) prior to serving any advertising using the Advertising Identifier (as defined in the PLA) and will abide by a user's setting in iOS when enabled by a user.
     

    Attached Files: