문제가 있습니다. AdMob은 문제없이 설정되었지만 문제가 발생했습니다. 광고가로드되고 (ddms의 메시지가 표시됨) 표시되지 않습니다. 정기 60 초 후 또는 Google Plus에 로그인 할 때 표시됩니다. 문제는 Google Play 서비스 AdMob에서만 발생하며 AdMobSDK jar에서는 발생하지 않습니다. AdMob jar로 전환 하겠지만 리더 보드 및 업적에 Google Play 게임 서비스를 사용하고 있습니다.새로 고침하거나 Google에 로그인 할 때까지 AdMob에서 배너를 표시하지 않습니다.
문제가보기가 표시되지 않거나 잘못 설정된 것으로 의심됩니다.
다시 말해 광고 대기 시간이 60 초 (광고 새로 고침 포함)가 지나면 Google Play 서비스의 로그인 화면이 열립니다.
코드를 추가 할 예정이며 새 AdMob 웹 사이트로 전환했음을 언급해야하며 AdMob jar 파일을 사용하면 문제가 발생하지 않습니다. (광고는 2-3 초 후에 표시됩니다. 정상처럼). Google Play 게임 서비스 코드를 잘라 냈습니다 (문제가없는 다른 앱에서 시도했기 때문에이 문제에 영향을주지 않습니다. 문제가 아직 남아 있습니다).
MainActivity 코드 : 여기
public class MainActivity extends AndroidApplication {
public static enum AdsStatus {
SHOW_ADS, HIDE_ADS;
}
protected RelativeLayout layout;
protected static AdView adMobView;
public static class InnerHandler extends Handler {
WeakReference<MainActivity> mActivity;
InnerHandler(MainActivityactivity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(final Message msg) {
if(msg.obj instanceof AdsStatus) {
switch((AdsStatus)msg.obj) {
case SHOW_ADS:
mActivity.get().showAds();
break;
case HIDE_ADS:
mActivity.get().hideAds();
break;
}
}
}
}
protected Handler handler = new InnerHandler(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the layout
layout = new RelativeLayout(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
// Create the libgdx View
View gameView = initializeForView(new MainApplicationListener(), true);
layout.addView(gameView);
//Ad Mob
final DisplayMetrics displayMetrics = MainActivity.this
.getApplicationContext().getResources()
.getDisplayMetrics();
if (displayMetrics.widthPixels >= 800 && displayMetrics.heightPixels >= 480) {
if(adMobView != null) {
adMobView.destroy();
}
adMobView = new AdView(AirDance.this);
adMobView.setAdUnitId(<MY_ID_IS_HERE>);
adMobView.setAdSize(AdSize.SMART_BANNER);
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(<MY_DEVICE_IS_HERE>)
.build();
adMobView.loadAd(adRequest);
layout.addView(adMobView, adParams);
}
// Hook it all up
setContentView(layout);
}
@Override
protected void onResume() {
super.onResume();
AppRater.applicationLaunched(this, analytics);
if(adMobView != null) {
adMobView.resume();
}
}
@Override
protected void onPause() {
super.onPause();
if(adMobView != null) {
adMobView.pause();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(adMobView != null) {
adMobView.destroy();
adMobView = null;
}
}
public void showAds() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(adMobView != null) {
adMobView.setEnabled(true);
adMobView.setVisibility(View.VISIBLE);
}
}
});
}
public void hideAds() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(adMobView != null) {
adMobView.setEnabled(false);
adMobView.setVisibility(View.GONE);
}
}
});
}
}
그리고는 AndroidManifest를하다 :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="..."
android:installLocation="auto"
android:versionCode="16"
android:versionName="1.2.6" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.screen.landscape"/>
<uses-feature android:name="android.hardware.touchscreen.multitouch" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="MainActivity">
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="...MainActivity"
android:label="MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- adMob -->
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
</manifest>
편집 : 나는 잠 오픈 앱 화면 잠금을 해제 한 후 좋아, 광고는 또한 당신이 할 수있는, 눈에 보이는 도착 보이지 않는 광고를 클릭하십시오
편집 : 좋아, 내가 해결했다고 생각해. 방금 전체 레이아웃 onAdLoad 이벤트를 수동으로 다시로드했습니다. 어쨌든 이것은 단지 기능적 해결책 일 뿐이며 Google Play에서 왜 그런지 설명하지 않습니다 서비스 AdMob.
adMobView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
layout.requestLayout();
}
});
}
});
환영합니다! 일반적으로 우리는 질문에 태그 라인에 감사를 표하여 회피하지 않으려 고합니다. 그 이유는 다음과 같습니다. "[감사합니다, '태그 라인 및 인사말을 게시물에서 제거해야합니까?] (http : // meta. stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts) "를 참조하십시오. – veducm
알았어, 고마워! 나는 몰랐다. –
이것은 나를 위해 너무 작동합니다. 감사합니다 –