2017-04-05 3 views
0

Admob의 삽입 광고를 사용하고 있습니다. 내 응용 프로그램은 "loadAd"에서 처음 호출 될 때만 중단되고 재현성이 없습니다 (100-200 번 실행되는 횟수가 적거나 많음). 광고 단위 ID가 맞는지 확인하십시오. 따라서 loadAd가 처음 호출 될 때 실패하지 않으면이 실행에서 전혀 실패하지 않습니다.android : admob loadAd시의 InterstitialAd 충돌

클래스 멤버 :

InterstitialAd mInterstitialAd; 

에서 onCreate :

mInterstitialAd = new InterstitialAd(this); 

mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id)); 

mInterstitialAd.setAdListener(new AdListener() { 
    @Override 
    public void onAdClosed() { 
     requestNewInterstitial(); 
     finish(); 
    } 
}); 

requestNewInterstitial(); 

requestNewInterstitial 방법 :

private void requestNewInterstitial() { 
    if (mInterstitialAd != null) { 
     AdRequest adRequest = new AdRequest.Builder() 
       .addTestDevice(getResources().getString(R.string.test_device)) 
       .build(); 

     if (adRequest == null) { 
      return; 
     } 

     // HERE'S THE CRASH 
     try { 
      mInterstitialAd.loadAd(adRequest); 
     }catch(Exception e) { 
      return; 
     } 
    } 
} 

캐치는 "loadAd에"의 충돌을 잡을 수 없습니다.

어떻게 잡을 수 있습니까? 아니면 내 응용 프로그램을 충돌시키지 않아도됩니까? loadAd가 실패하면 광고가 표시되지 않기를 바랍니다.

로그 캣 :

A/libc: Fatal signal 5 (SIGTRAP), code 1 in tid 27794 (AdWorker(Defaul) 
W/VideoCapabilities: Unrecognized profile 2130706433 for video/avc 
I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es 

지난 2 개 라인이 충돌에 대해 있지만 첫 번째는 확실히 경우 나도 몰라. 일이 무엇인지 때때로

+1

이 네이티브 C 라이브러리에 오류가 발생합니다. 어떤 기기를 테스트하고 있습니까? – William

답변

0

당신이 loadAd에 전화를하려고 그렇게 할 때 광고가 버퍼에로드 얻을하지 않습니다, 그것은 충돌 에서 onCreate :

같은 클래스에서
mInterstitialAd = new InterstitialAd(this); 
    // set the ad unit ID 
    mInterstitialAd.setAdUnitId(getString(R.string.ad_id)); 

    AdRequest adRequest2 = new AdRequest.Builder() 
      .build(); 
    // Load ads into Interstitial Ads 

    mInterstitialAd.loadAd(adRequest2); 

    mInterstitialAd.setAdListener(new AdListener() { 
     public void onAdLoaded() { 
      showInterstitial(); 
     } 
    }); 

:

private void showInterstitial() { 
    if (mInterstitialAd.isLoaded()) { 
     mInterstitialAd.show(); 
    } 
} 
+0

오케이 그래서 해결책은 무엇입니까? 각 줄 앞에 번호가 인쇄되고 충돌이 발생하면 "loadAd"줄 이후의 번호는 절대로 인쇄되지 않기 때문에 충돌이 "loadAd"줄에 있다고 확신합니다. –

+0

위의 단계를 수행하려고 시도했지만 위에서 setAdListener를 추가하십시오. 그것은 작동해야합니다. 또한 Logcat에있는 오류에 익숙하지 않아서 언급 한 문제 일 수 있으므로 한번 시도하십시오. –

+0

오, 알았어! 수백 번 시도해보고 알려 드리겠습니다. 감사! –

0

Activtiy_m1 .java

public class Activity_m1 extends AppCompatActivity { 

    InterstitialAd interstitial; 
    Activity mactivity; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_m1); 
     setTitle("ABCD"); 
     Advertise.displaym1(getApplicationContext()); 
    } 

    @Override 
    public void onBackPressed() { 
      Advertise adv = new Advertise(); 
      adv.disp_adm1(); 
     finish(); 
    } 
} 

Advertise.java

public class Advertise { 
    public static InterstitialAd interstitial; 

    public static void displaym1(Context act) { 
     interstitial = new InterstitialAd(act); 
     interstitial.setAdUnitId("ca-app-pub-2621588945556564/3343556333"); 
     AdRequest adRequest1 = new AdRequest.Builder().build(); 
     interstitial.loadAd(adRequest1); 
    } 
    public void disp_adm1() { 
     if (interstitial.isLoaded()) 
      interstitial.show(); 
    } 
} 
+0

이 차이점과 화재 원인을 설명해 주시겠습니까? 정적 태도를 제외하고 .. –