1

アプリの 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 用の広告を作成する方法もありますが、広告を表示するには を使用します。私たちが知る限り、Chartboost のアクティビティを開始するために使用する必要があります。Chartboost の SDK インテグレーションに従いましたが、そのための作成に行き詰まりました。使用するものはすべてbyを参照していると私たちは信じています。たとえば、パラメーターとしてメソッドに渡し、これらのメソッドごとに Runnable クラスで何かを実行します。そのようなrunOnUiThread()WindowManagerRunnableRunnableRunnablesAGKHelperNativeActivityShowMessage()

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 に非常に慣れていないため、学習しながら進歩しているように感じますが、その後は何も起こりません。

RunnableChartboostに表示させるクラスの完全な例はありますか? どうぞよろしくお願いいたします。AGKHelper完全なメソッドなど、ここでクラスの詳細を共有しますがRunnableAd()、それは長く、WindowsManagerセットアップでいっぱいです。RunnableMessage私が提供できる最も短い例です。ありがとう。

4

1 に答える 1

0

Intentとでこれを実行することができました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 に答える