zoukankan      html  css  js  c++  java
  • cocos2d-js添加百度appx的插屏广告(通过jsb反射机制)

    本来一直用的anysdk接入广告,结果从前几天开始,百度商店的审核总是通不过,结果一问才知道:要上传到百度商店就必须要用百度的appx(真的是各种坑,我们这些个人开发者迟早要被你们大公司玩死),没办法只能用appx了,谁叫百度的量还是挺大的呢

    下面是接入过程:

    【1】按照百度appx给的AppXSample,先把libs文件夹下的baidu_cuid.jar和baidu_appx_android_2.0.0.jar两个jar包拷贝至项目libs里面。

    【2】把AppXSample下的res文件夹下的文件全部拷贝至项目res,注意文件合并

    【3】修改AndroidManifest.xml

    添加:activity

    <!-- 移动云AppX SDK -->
            <activity android:name="com.baidu.appx.ui.BDInnerBrowser" />
    
            <receiver android:name="com.baidu.appx.app_download.CompleteReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
                    <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.PACKAGE_ADDED" />
    
                    <data android:scheme="package" />
                    <!-- 注意!! 这句必须要加,否则接收不到安装完成广播 -->
                </intent-filter>
            </receiver>

    添加两个权限:

        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    【4】修改AppActivity.java文件

    package org.cocos2dx.javascript;
    
    import org.cocos2dx.lib.Cocos2dxActivity;
    import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
    import android.content.pm.ActivityInfo;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.WindowManager;
    //百度appx
    import com.baidu.appx.BDInterstitialAd;
    import com.baidu.appx.BDInterstitialAd.InterstitialAdListener;
    import android.util.Log;
    
    
    
    public class AppActivity extends Cocos2dxActivity{
            
        //百度appx
        private static AppActivity app = null;
        private static String TAG = "AppX_Interstitial";
        private static BDInterstitialAd appxInterstitialAdView;
        
        static String hostIPAdress="0.0.0.0";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    //百度appx app
    = this;//百度appx appxInterstitialAdView = new BDInterstitialAd(this, "h8g8XsOYSXo5uGnGXdAHOAUw", "zqGAV5GBdAPWt0NWuPDylS2E"); appxInterstitialAdView.setAdListener(new InterstitialAdListener() { @Override public void onAdvertisementDataDidLoadFailure() { Log.e(TAG, "load failure"); } @Override public void onAdvertisementDataDidLoadSuccess() { Log.e(TAG, "load success"); } @Override public void onAdvertisementViewDidClick() { Log.e(TAG, "on click"); } @Override public void onAdvertisementViewDidHide() { Log.e(TAG, "on hide"); } @Override public void onAdvertisementViewDidShow() { Log.e(TAG, "on show"); } @Override public void onAdvertisementViewWillStartNewIntent() { Log.e(TAG, "leave"); } }); appxInterstitialAdView.loadAd(); } public static void sdks(final String title,final String message) { //这里一定要使用runOnUiThread app.runOnUiThread(new Runnable() { @Override public void run() { if (appxInterstitialAdView.isLoaded()) { appxInterstitialAdView.showAd(); } else { Log.i(TAG, "AppX Interstitial Ad is not ready"); appxInterstitialAdView.loadAd(); } } }); } }

    其中sdks()方法为jsb反射回调方法,目的是显示插屏广告

    ps:要把参数换成自己的api_key和推广位ID

    【5】最后一步就是在js代码中添加调用sdks()的方法

    jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "sdks", "(Ljava/lang/String;Ljava/lang/String;)V", "title", "hahahahha");
    
  • 相关阅读:
    深入浅出 Application Insights--学习笔记
    .NET Core 在 K8S 上的开发实践--学习笔记
    传统.NET应用向微服务架构迁移的实践经验--学习笔记
    微服务快速开发框架的设计--学习笔记
    在.NET Core下的机器学习--学习笔记
    RPA AI .NET Core 与未来--学习笔记
    当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记
    .Net Core + 微信赋能企业级智能客服系统--学习笔记
    用ASP.NET Core构建可检测的高可用服务--学习笔记
    ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
  • 原文地址:https://www.cnblogs.com/recock/p/4570454.html
Copyright © 2011-2022 走看看