Game shows iAd on iPad successfully, but not in final build submitted for review. Why?

Summary:

I implemented iAd in my game using the Unity built-in AdBannerView functionalities. The game successfully showed the iAd test ad on iPad when it’s executed via xcode. However, the submitted game was rejected by Apple reviewers because of this reason: “We found your app uses the iOS Advertising Identifier but does not include ad functionality.” In the resolution center, I posted some screenshots to prove that my game showed the test ad. They replied with screenshots that showed that ad didn’t appear at their end.

Detail:

The following is the code I wrote to implement iAd

using UnityEngine;
using System.Collections;

public class iAdManager : MonoBehaviour {

#if UNITY_IPHONE
	private ADBannerView banner = null;

	void Awake () 
	{
		DontDestroyOnLoad (gameObject);
	}

	void Start () {
		banner = new ADBannerView (ADBannerView.Type.Banner, 
		                           ADBannerView.Layout.BottomCenter);

		// subscribe functions to Banner events
		ADBannerView.onBannerWasClicked += OnBannerClicked;
		ADBannerView.onBannerWasLoaded  += OnBannerLoaded;
	}

	void OnBannerClicked()
	{
		Debug.Log("Clicked!

");
}

	void OnBannerLoaded()
	{
		Debug.Log("Loaded!

");
banner.visible = true;
}
#endif
}

I did a ‘build and run’ on Unity. The build appeared on xcode, with some warnings about depreciations of some banner sizes. The game then showed up on my iPad, with the test iAd being successfully displayed at the bottom.

For the submission process, I loosely followed the official video tutorial. I say ‘loosely’ because the xcode UI has changed since, so I could only follow adaptively. Briefly speaking, I changed the code signing to iOS distribution, cleaned, archived, validated and submitted it via xcode.

What did I do wrong? Thank you for your help.

(Proof of test iAD successfully showing in test build is below)

hi kumarc123, unfortunately, with the new iAd, if I don’t use banner.visible=true; there is not even a white bar now. The default visible is FALSE, so using it is a must.

The delegate methods are recommended in the Unity HELP. How would you change the code? Only have the Start() function?

EDIT:

My app has been rejected a second time.

In my 3rd submission, I’ll say ‘No’ to the question ‘Does this app use IDFA’ posed during the app submission stage.

In addition, I’ll put banner.visible = true in the start event and bypass the delegates.

We’ve been told that we don’t need to modify the DeviceSettings.mm anymore after Unity 4.5.x, when I do a grep -r on the xcode project folder generated by Unity, I STILL see the following. Is this the reason why my app is rejected?

[31202-grep+screen.png|31202]