package org.robovm.bindings.admob;
import org.robovm.apple.coregraphics.CGPoint;
import org.robovm.apple.uikit.UIView;
import org.robovm.apple.uikit.UIViewController;
import org.robovm.objc.annotation.Method;
import org.robovm.objc.annotation.NativeClass;
import org.robovm.objc.annotation.Property;
import org.robovm.rt.bro.annotation.ByVal;
import org.robovm.rt.bro.annotation.Pointer;
/** The view that displays banner ads. A minimum implementation to get an ad from within a UIViewController class is:
*
* Create and setup the ad view, specifying the size and origin at {0, 0}.
*
* <pre>
* GADBannerView adView = new GADBannerView(GADAdSizeManager.banner());
* adView.setRootViewController(this);
* adView.setAdUnitID("ID created when registering my app");
* </pre>
*
* Place the ad view onto the screen.
*
* <pre>
* this.addSubview(adView);
* </pre>
*
* Request an ad without any additional targeting information.
*
* <pre>
* adView.loadRequest(null);
* </pre> */
@NativeClass
public class GADBannerView extends UIView {
/** Initializes a GADBannerView and sets it to the specified size, and specifies its placement at the top left of its superview.
* If size is invalid, an instance of GADBannerView is not created and nil is returned instead.
* @param size */
public GADBannerView (GADAdSize size) {
super((SkipInit)null);
initObject(init(size));
}
/** Initializes a GADBannerView and sets it to the specified size, and specifies its placement within its superview bounds. If
* |size| is invalid, an instance of GADBannerView is not created and nil is returned instead.
* @param size
* @param origin */
public GADBannerView (GADAdSize size, CGPoint origin) {
super((SkipInit)null);
initObject(init(size, origin));
}
@Method(selector = "initWithAdSize:")
private native @Pointer
long init (@ByVal GADAdSize size);
@Method(selector = "initWithAdSize:origin:")
private native @Pointer
long init (@ByVal GADAdSize size, @ByVal CGPoint origin);
@Property
public native String getAdUnitID ();
/** Required value created in the AdSense website. Create a new ad unit for every unique placement of an ad in your application.
* Set this to the ID assigned for this placement. Ad units are important for targeting and stats. Example values for different
* request types: AdMob: a0123456789ABCD DFP: /0123/ca-pub-0123456789012345/my-ad-identifier AdSense:
* ca-mb-app-pub-0123456789012345/my-ad-identifier Mediation: AB123456789ABCDE
* @param adUnitID */
@Property
public native void setAdUnitID (String adUnitID);
@Property
public native UIViewController getRootViewController ();
/** Required reference to the current root view controller. For example the root view controller in tab-based application would
* be the UITabViewController.
* @param viewController */
@Property
public native void setRootViewController (UIViewController viewController);
@Property
public native @ByVal
GADAdSize getAdSize ();
/** Required to set this banner view to a proper size. Never create your own GADAdSize directly. Use one of the predefined
* standard ad sizes (such as kGADAdSizeBanner), or create one using the GADAdSizeFromCGSize method. If not using mediation,
* then changing the adSize after an ad has been shown will cause a new request (for an ad of the new size) to be sent. If
* using mediation, then a new request may not be sent.
* @param adSize */
@Property(strongRef = true)
public native void setAdSize (@ByVal GADAdSize adSize);
@Property
public native GADBannerViewDelegate getDelegate ();
/** Optional delegate object that receives state change notifications from this GADBannerView. Typically this is a
* UIViewController, however, if you are unfamiliar with the delegate pattern it is recommended you subclass this GADBannerView
* and make it the delegate. That avoids any chance of your application crashing if you forget to null out the delegate.
* @param delegate */
@Property(strongRef = true)
public native void setDelegate (GADBannerViewDelegate delegate);
/** Makes an ad request. Additional targeting options can be supplied with a request object. Refresh the ad by calling this
* method again.
* @param request */
@Method(selector = "loadRequest:")
public native void loadRequest (GADRequest request);
/** @return {@code true}, if the currently displayed ad (or most recent failure) was a result of auto refreshing as specified on
* server. This will be set to {@code false} after each {@link #loadRequest(GADRequest)} method. */
@Property(selector = "hasAutoRefreshed")
public native boolean isAutoRefreshed ();
/** @return the underlying ad view of the mediated ad network. You may use this to find out the actual size of the ad and adjust
* GADBannerView to fit the underlying ad view. */
@Property
public native UIView getMediatedAdView ();
/** @return the ad network class name that fetched the current ad. Returns nil while the latest ad request is in progress or if
* the latest ad request failed. For both standard and mediated Google AdMob ads, this method returns
* "GADMAdapterGoogleAdMobAds". For ads fetched via mediation custom events, this method returns
* "GADMAdapterCustomEvents". */
@Property
public native String getAdNetworkClassName ();
}