2014-10-19 2 views
1

Я создал проект iGGXX iOS, и я пытаюсь разместить объявления AdMob в нижней части экрана, но понятия не имею, как это сделать. Я использую привязки через RoboVM и не знаю ни одного из методов RoboVM для управления моими объявлениями. Я скопировал учебник от here Есть ли у кого-нибудь советы или руководства, которые помогут мне выполнить это? Прямо сейчас объявление кажется мне недостающим 1/4 всего рекламного объявления больше вправо от экрана. Ниже мой код:Управление позиционированием баннера AdMob в iOS через libGDX/RoboVM

public class IOSLauncher extends IOSApplication.Delegate implements IActivityRequestHandler{ 
private static final Logger log = new Logger(IOSLauncher.class.getName(), Application.LOG_DEBUG); 
private static final boolean USE_TEST_DEVICES = true; 
private GADBannerView adview; 
private boolean adsInitialized = false; 
private IOSApplication iosApplication; 

@Override 
protected IOSApplication createApplication() { 
    IOSApplicationConfiguration config = new IOSApplicationConfiguration(); 
    config.orientationLandscape = true; 
    config.orientationPortrait = false; 

    iosApplication = new IOSApplication(new TestProject(this), config); 
    return iosApplication; 
} 

public static void main(String[] argv) { 
    NSAutoreleasePool pool = new NSAutoreleasePool(); 
    UIApplication.main(argv, null, IOSLauncher.class); 
    pool.close(); 
} 

@Override 
public void hide() { 
    initializeAds(); 

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size(); 
    double screenWidth = screenSize.width(); 

    final CGSize adSize = adview.getBounds().size(); 
    double adWidth = adSize.width(); 
    double adHeight = adSize.height(); 

    log.debug(String.format("Hidding ad. size[%s, %s]", adWidth, adHeight)); 

    float bannerWidth = (float) screenWidth; 
    float bannerHeight = (float) (bannerWidth/adWidth * adHeight); 

    adview.setFrame(new CGRect(0, -bannerHeight, bannerWidth, bannerHeight)); 
} 

@Override 
public void show() { 
    initializeAds(); 

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size(); 
    double screenWidth = screenSize.width(); 

    final CGSize adSize = adview.getBounds().size(); 
    double adWidth = adSize.width(); 
    double adHeight = adSize.height(); 

    log.debug(String.format("Showing ad. size[%s, %s]", adWidth, adHeight)); 

    float bannerWidth = (float) screenWidth; 
    float bannerHeight = (float) (bannerWidth/adWidth * adHeight); 

    adview.setFrame(new CGRect((screenWidth/2) - adWidth/2, 0, bannerWidth, bannerHeight)); 
} 

public void initializeAds() { 
    if (!adsInitialized) { 
     log.debug("Initalizing ads..."); 

     adsInitialized = true; 

     adview = new GADBannerView(GADAdSize.banner()); 
     adview.setAdUnitID(Constants.AdUnitID); //put your secret key here 
     adview.setRootViewController(iosApplication.getUIViewController()); 


     iosApplication.getUIViewController().getView().addSubview(adview); 

     final GADRequest request = GADRequest.create(); 

     adview.setDelegate(new GADBannerViewDelegateAdapter() { 
      @Override 
      public void didReceiveAd(GADBannerView view) { 
       super.didReceiveAd(view); 
       log.debug("didReceiveAd"); 
      } 

      @Override 
      public void didFailToReceiveAd(GADBannerView view, 
        GADRequestError error) { 
       super.didFailToReceiveAd(view, error); 
       log.debug("didFailToReceiveAd:" + error); 
      } 
     }); 

     adview.loadRequest(request); 

     log.debug("Initalizing ads complete."); 
    } 
} 

@Override 
public void showAds(boolean show) { 
    initializeAds(); 

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size(); 
    double screenWidth = screenSize.width(); 

    final CGSize adSize = adview.getBounds().size(); 
    double adWidth = adSize.width(); 
    double adHeight = adSize.height(); 

    log.debug(String.format("Hidding ad. size[%s, %s]", adWidth, adHeight)); 

    float bannerWidth = (float) screenWidth; 
    float bannerHeight = (float) (bannerWidth/adWidth * adHeight); 

    if(show) { 
     adview.setFrame(new CGRect((screenWidth/2) - adWidth/2, 0, bannerWidth, bannerHeight)); 
    } else { 
     adview.setFrame(new CGRect(0, -bannerHeight, bannerWidth, bannerHeight)); 
    } 

ответ

1

установить позицию объявления с

adview.setFrame(CGRect); 

если вы проверяете параметры CGRect это как;

CGRect(double x, double y, double width, double height) 

0,0 координаты (x, y) наверху слева. так, ваш код;

// center of screen 
double adX = (screenWidth/2) - (adWidth/2); 
// bottom of screen 
double adY = screenHeight - bannerHeight; 

adview.setFrame(new CGRect(adX, adY, bannerWidth, bannerHeight)); 

и другие важные вещи, вы не должны манипулировать позиционированием двумя способами! ваш showAds метод должен быть таким;

public void showAds(boolean show) { 
    if (show) { 
     show(); 
    } else { 
     hide(); 
    } 
} 
+0

Спасибо ... это отлично работает, но теперь мой метод скрытия не работает. У вас есть рабочий метод show(), который работает? –

+0

Nevermind ... Я понял, я просто сделал это, и он работает ... adview.setFrame (новый CGRect (0, -adHeight, adWidth, adHeight)); –

Смежные вопросы