【问题标题】:Implementing AdMob into my iOS libgdx game?在我的 iOS libgdx 游戏中实施 AdMob?
【发布时间】:2015-09-14 20:03:52
【问题描述】:

据我了解,执行上述操作的方法是将以下代码行添加到 gradle 中

project(":ios") {
    apply plugin: "java"
    apply plugin: "robovm"

    dependencies {
        compile project(":core")
        //...
        compile "org.robovm:robopods-google-mobile-ads-ios:1.6.0"
    }
}

但是,在这样做之后,我不知道下一步是什么。我期待与我所做的类似的事情,以使其适用于 android 设备。但是我似乎无法找到正确的信息,任何帮助都将非常感谢我的下一步应该是什么

【问题讨论】:

    标签: ios android-studio libgdx admob robovm


    【解决方案1】:

    添加该行后,右键单击您的 iOS 项目和 Gradle>全部刷新。

    现在,您的成绩依赖项中有 robopods jar。

    对于您的 iOSLauncher.java:

    package com.YOURPACKAGENAME;//TODO
    
    
    import org.robovm.apple.coregraphics.CGRect;
    import org.robovm.apple.coregraphics.CGSize;
    import org.robovm.apple.foundation.Foundation;
    import org.robovm.apple.foundation.NSAutoreleasePool;
    import org.robovm.apple.uikit.UIApplication;
    import org.robovm.apple.uikit.UIApplicationLaunchOptions;
    import org.robovm.apple.uikit.UIScreen;
    import org.robovm.pods.google.mobileads.GADAdSize;
    import org.robovm.pods.google.mobileads.GADBannerView;
    import org.robovm.pods.google.mobileads.GADRequest;
    
    import com.badlogic.gdx.backends.iosrobovm.IOSApplication;
    import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration;
    import com.YOURPACKAGENAME.GAMECLASS;//TODO
    import com.badlogic.gdx.Application;
    import com.badlogic.gdx.utils.Logger;
    
    import org.robovm.pods.google.mobileads.GADBannerViewDelegateAdapter;
    import org.robovm.pods.google.mobileads.GADRequestError;
    
    public class IOSLauncher extends IOSApplication.Delegate {
    
        private static CGSize AD_SIZE;
        private static final Logger log = new Logger(IOSLauncher.class.getName(), Application.LOG_DEBUG);
        private GADBannerView adview;
        private boolean adsInitialized = false;
        private IOSApplication iosApplication;
    
        @Override
        protected IOSApplication createApplication() {
            GAMECLASS app = new GAMECLASS();//TODO
            IOSApplicationConfiguration config = new IOSApplicationConfiguration();
            config.orientationLandscape = false; 
            config.orientationPortrait = true; 
            iosApplication = new IOSApplication(app, config);
            return iosApplication;
        }
    
        public static void main(String[] argv) {
            NSAutoreleasePool pool = new NSAutoreleasePool();
            UIApplication.main(argv, null, IOSLauncher.class);
            pool.close();
        }
    
        // Ads
        public void showAd() {
            initializeAds();
            //Portrait bottom screen
            final CGSize screenSize = UIScreen.getMainScreen().getBounds().getSize();
            double screenWidth = screenSize.getWidth();
            AD_SIZE = adview.getBounds().getSize();
            double adWidth = AD_SIZE.getWidth();
            double adHeight = AD_SIZE.getHeight();
            float bannerWidth = (float) screenWidth;
            float bannerHeight = (float) (bannerWidth / adWidth * adHeight);
            double screenHeight = screenSize.getHeight();
            double adX = (screenWidth / 2) - (adWidth / 2);
            double adY = screenHeight - bannerHeight;
    
            //Landscape top screen
            //<string>UIInterfaceOrientationLandscapeRight</string>
            //<string>UIInterfaceOrientationLandscapeLeft</string>
            /*
            double adWidth = adSize.getWidth();
            double adHeight = adSize.getHeight();
            double screenHeight = screenSize.getHeight();
            double screenWidth = screenSize.getWidth();
            float bannerWidth = (float) screenWidth/2;
            float bannerHeight = (float) ((float) screenHeight/10.0);
            double adX = (screenWidth / 2) - (adWidth / 2);
            double adY = 0;
            */
    
            adview.setFrame(new CGRect(adX, adY, bannerWidth, bannerHeight));
    
    
        }
        @Override
        public boolean didFinishLaunching (UIApplication application, UIApplicationLaunchOptions launchOptions) {
            boolean didFinish = super.didFinishLaunching(application, launchOptions);
    
            this.showAd();
    
            return didFinish;
        }
    
        public void initializeAds() {
    
            if (!adsInitialized) {
                Foundation.log("Initalizing ads...");
    
                adsInitialized = true;
    
    
                adview = new GADBannerView(GADAdSize.SmartBannerPortrait());
                adview.setAdUnitID("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); //put your secret key here TODO
                adview.setRootViewController(iosApplication.getUIViewController());
                iosApplication.getUIViewController().getView().addSubview(adview);
    
    
                final GADRequest request = new GADRequest();
    
                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);
                        Foundation.log("ERROR at didFailToReceiveAd: " + error);
                    }
                });
    
                adview.loadRequest(request);
                Foundation.log("Initalizing ads complete.");
            }
        }
    }
    

    应该适用于 iOS 9。 此外,如果您在运行它时遇到任何问题,请确保在最新更新后清理 roboVM 缓存。

    【讨论】:

    • 我也在做同样的事情,但我遇到了一个错误,而且我一次又一次地看到它变得疯狂。错误说java.lang.NoClassDefFoundError: org/robovm/apple/foundation/NSObject$Handle at org.robovm.pods.google.mobileads.GADRequest.(GADRequest.java) at com.xxxxxxxx.ViewController.createRequest(ViewController.java) at com.xxxxxxxx.ViewController.createAndLoadBanner(ViewController.java)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多