«

libgdx robovm admob IOS SDK的绑定

时间:2024-3-2 18:14     作者:韩俊     分类: Android


IOS里面主要的广告平台就是用的是ADMOB, 在最新的ADMOB采用的是framework的方式,在绑定项目https://github.com/BlueRiverInteractive/robovm-ios-bindings/tree/master/admob已经不能正常使用了. 看到大家都有需求, 加班到凌晨1点钟,总算把它搞定了. 遇到了有些问题始终解决不了. 下面来介绍下怎么使用.

1.遇到的困难,

因为admob中有几处奇葩的写法,导致无法使用隐藏的symbol. 解决方案是自定义了一个.a然后写绑定 搞定

2.使用方法

在core项目中定义接口

public interface ITools {
    public void showInterAd();
    public void showBanner();
}

然后在Game里面传入它

public class GdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    ITools tools;

    public GdxGame(ITools tools) {
        this.tools = tools;
    }

    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");

        tools.showInterAd();
        tools.showBanner();
    }
在IOS项目中实现该接口并写入传入

public class IOSLauncher extends IOSApplication.Delegate implements ITools{
    private static final String AD_UNIT_ID = "ca-app-pub-1743332321423234/7283499900";
    static IOSLauncher instance;

    @Override
    protected IOSApplication createApplication() {
        IOSApplicationConfiguration config = new IOSApplicationConfiguration();
        return new IOSApplication(new GdxGame(instance), config);
    }

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

    @Override
    public void showInterAd() {
        final GADInterstitial interstitial = new GADInterstitial(AD_UNIT_ID);
        interstitial.setDelegate(new GADInterstitialDelegateAdapter(){
            @Override
            public void didReceiveAd(GADInterstitial ad) {
                super.didReceiveAd(ad);
                interstitial.present(((IOSApplication) Gdx.app).getUIViewController());
            }

            @Override
            public void didFailToReceiveAd(GADInterstitial ad,
                    GADRequestError error) {
                Gdx.app.log("xxx", error.getCode() + "");
                super.didFailToReceiveAd(ad, error);
            }
        });

        GADRequest request = GADRequest.create();
        List<String> devices = new ArrayList<String>();
        devices.add(GADRequest.GAD_SIMULATOR_ID);

        request.setTestDevices(devices);
        interstitial.loadRequest(request);
    }

    @Override
    public void showBanner() {
         final GADBannerView mBannerView = new GADBannerView(GADAdSize.smartBannerPortrait());
            mBannerView.setAdUnitID("ca-app-pub-1743332321423234/2574098708");

            final UIViewController controller = ((IOSApplication) Gdx.app).getUIViewController();

            GADRequest request = GADRequest.create();
            List<String> devices = new ArrayList<String>();
            devices.add(GADRequest.GAD_SIMULATOR_ID);
            mBannerView.setRootViewController(controller);          
            controller.getView().addSubview(mBannerView);

            mBannerView.loadRequest(request);
    }
}

应该能看懂吧? 不懂请留言


3.最重要的是环境搭建

因为自定义了一个.a文件, 所以把libGADAdSizeWrapped.a文件放入iOS项目的build/libs下面,并写入xml

<libs>
      <lib>z</lib>   
     <lib>build/libs/libGADAdSizeWrapped.a</lib>   
  </libs>

把GoogleMobileAds.framework放入到build/libs里面,并在xml指定framework寻找路径(必须要加入这些framework才行哟)

 <frameworkPaths>
        <path>build/libs</path>
  </frameworkPaths>
  <frameworks>
    <framework>UIKit</framework>
    <framework>OpenGLES</framework>
    <framework>QuartzCore</framework>
    <framework>CoreGraphics</framework>
    <framework>OpenAL</framework>
    <framework>AudioToolbox</framework>
    <framework>AVFoundation</framework>
    <framework>CoreTelephony</framework>
    <framework>EventKit</framework>
    <framework>MessageUI</framework>
    <framework>EventKitUI</framework>
    <framework>SystemConfiguration</framework>
    <framework>CoreMedia</framework>
    <framework>GoogleMobileAds</framework>
  </frameworks>
  <weakFrameworks>
        <framework>AdSupport</framework>
        <framework>StoreKit</framework>
    </weakFrameworks>

至此书写完毕,可以运行了.......为了那个自定义.a我还去注册了个开发者账号呢,....蛋疼 99刀大洋 心痛

如果您觉得对你有帮助的话请点赞,谢谢!

源码地址:https://github.com/tianqiujie/robovm-ios-bindings


标签: android

热门推荐