1

我们正在为我们的一款应用程序使用 App Game Kit,并尝试删除 AdMob,以便我们可以使用 Chartboost。AGK 为其语言使用解释器,通过 NDK 传递给 java。他们有一个名为的类AGKHelper,它是当前调用 Facebook、AdMob、警报对话和其他一些活动的命令的入口点。通过类AGKHelper运行事件中的每个方法。Runnable这是他们进行警报对话的程序示例:

public class AGKHelper {
    //just a sample of what's in there many other methods exist
    public static void ShowMessage( Activity act, String msg )
    {
        RunnableMessage run = new RunnableMessage();
        run.act = act;
        run.msg = msg;
        act.runOnUiThread( run );
    }

}

现在RunnableMessage创建警报对话的类。

class RunnableMessage implements Runnable
{
    public Activity act;
    public String msg;

    public void run() {
            AlertDialog alertDialog;
            alertDialog = new AlertDialog.Builder(act).create();
            alertDialog.setTitle("Message");
            alertDialog.setMessage(msg);
            alertDialog.setButton( DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog, int which) {}});
            alertDialog.show();
            }
 }

还有一种CreateAd()方法可以使用 为 AdMob 制作广告runOnUiThread(),但使用WindowManager来显示广告。据我们所知,我们必须使用RunnableChartboost 进行活动。我们遵循 Chartboost 的 SDK 集成,但我们一直在为它创建自己Runnable的东西。我们相信,所有Runnables这些AGKHelper使用还指的NativeActivity是,将其作为参数传递给方法ShowMessage(),然后在 Runnable 类中为这些方法中的每一个做一些事情。如

AlertDialog.Builder(act) //for the message
ad = new AdView(act, AdSize.BANNER, pubID); //for AdMob - RunnableAd
feed.dialog(act, "feed", parameters,new DialogListener() {} // for RunnableFacebook

不幸的是,似乎没有办法将 传递NativeActivity给 Chartboost 可运行文件。我们对 Java 非常缺乏经验,所以我们边走边学,感觉自己取得了进步,但是什么也没有发生。

有没有人有一个Runnable让 Chartboost 显示的类的完整示例?我们非常感谢您的帮助。我会在AGKHelper这里分享更多的课程,例如完整的RunnableAd()方法,但它很长并且充满了WindowsManager设置。RunnableMessage是我能提供的最短的例子。谢谢。

4

1 回答 1

0

我们已经能够使用Intentand来运行它startActivity()

AGKHelper作为所有命令的入口点的类包含:

public static void CreateAd(Activity act, String publisherID, int horz, int vert, int offsetX, int offsetY)
{       
    Looper.prepare();

    Intent myIntent = new Intent(act, ChartboostActivity.class);
    act.startActivity(myIntent);
}

ChartboostActivity班级:

public class ChartboostActivity extends Activity {
    private Chartboost cb;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chartboostmain);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);

        // Configure Chartboost
        this.cb = Chartboost.sharedChartboost();

        String appId = "XXXXXXXXXXXXXX";
        String appSignature = "XXXXXXXXXXXXXXX";
        this.cb.onCreate(this, appId, appSignature, null);
        //this.cb.setImpressionsUseActivities(true);
        CBPreferences.getInstance().setImpressionsUseActivities(true);
    }

    @Override
    public void onStart() {
         super.onStart();
         this.cb.onStart(this);
         // Notify the beginning of a user session. Must not be dependent on user actions or any prior network requests.
         this.cb.startSession();
         // Show an interstitial
         //this.cb.showInterstitial(); 
         this.cb.showMoreApps();
         finish();
    }

    @Override
    protected void onStop() {
        //finish();
        super.onStop();

        this.cb.onStop(this);
    }

    @Override
    protected void onDestroy() {        
        //finish();
        super.onDestroy();

        this.cb.onDestroy(this);
    }

    @Override
    public void onBackPressed() {
         // If an interstitial is on screen, close it. Otherwise continue as normal.
         if (this.cb.onBackPressed())
         {
             finish();
             return;
         }
         else    
             super.onBackPressed();
    }
}

虽然这似乎工作得很好,但我们发现我们不能用来关闭orfinish()中的循环很奇怪。理想情况下,我们希望在一个类中完成所有这些操作,以便我们可以访问该活动并可以调用其他方法。如果有人有这方面的例子,将不胜感激。但是这个解决方案似乎有效!onDestroy()onStop()Runnable

于 2014-04-05T15:39:23.230 回答