Эй, у меня есть веб-игра html5, и я создал приложение для нее, чтобы превратить ее в деньги с помощью Admob.
Я использую интерфейс JavaScript для обработки события приложения из кода JavaScript.
Большинство вещей работает нормально, но показанная реклама не активна.
Часть из них полностью недоступна для клика - вы не можете нажать на кнопку «закрыть», значок «x» и кнопку «установить» (чтобы перейти к игре на Android и загрузить приложение из рекламы). В других случаях не работает только кнопка «установить», или таймер не отсчитывает, а просто записывает «30 секунд до конца».
Вот файл манифеста.
мои данные заменены на "ххх"
<manifest
package="com.example.app"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<meta-data
android:name="com.google.android.gms.ads.xxxxxx.xx.xxxxxxx"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxx"
/>
<application
android:name="android.support.multidex.MultiDexApplication"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@mipmap/ic_launcher"
android:label="xxxxxx xxxxxxxx"
android:theme="@style/AppTheme"
android:debuggable="false"
tools:ignore="GoogleAppIndexingWarning,HardcodedDebugMode"
tools:replace="android:icon,android:label">
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<receiver android:name="com.tenjin.android.TenjinReferrerReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
<activity
android:name="com.example.app.MainActivity"
android:label="xxxxxxx xxxxxxxx" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- Required to get network connectivity (i.e. wifi vs. mobile) -->
</manifest>
Вот основное занятие
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView)findViewById(R.id.activity_main_webview);
WebSettings ws= myWebView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setDomStorageEnabled(true);
ws.setMediaPlaybackRequiresUserGesture(false);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.addJavascriptInterface(new WebAppInterface(this), "MyJSClient");
myWebView.setWebViewClient(new WebViewClient());
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.getSettings().setBuiltInZoomControls(true);
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
myWebView.loadUrl(gameUrl);
if(allowInterstitialAds){
mInterstitialAd = new InterstitialAd(this);
if(isTest){
mInterstitialAd.setAdUnitId(TESTadmobUnitIdInterstitial);
} else{
mInterstitialAd.setAdUnitId(admobAdUnitIdInterstitial);
}
loadInterstitialAd();
mInterstitialAd.setAdListener(new AdListener(){
@Override
public void onAdLoaded(){
Log.i(TAG,"ad successfully loaded");
}
@Override
public void onAdClosed() {
makeWebviewVisible();
myWebView.loadUrl("javascript:(window.onload = function(){onAdClosed();})()");
// Load the next interstitial.
loadInterstitialAd();
}
});
}
}
public void loadInterstitialAd(){
Log.i(TAG,"loadInterstitialAd function called");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
public void startInterstitialAdProcess(){
if (mInterstitialAd.isLoaded()) {
Log.i(TAG,"Ad will run now");
hideWebView();
mInterstitialAd.show();
loadInterstitialAd();
}
else {
Log.i(TAG, "Ad not loaded");
}
}
public void hideWebView(){
Log.i(TAG,"hiding webview");
myWebView.setVisibility(View.GONE);
}
public void makeWebviewVisible(){
Log.i(TAG,"making webview visible");
myWebView.setVisibility(View.VISIBLE);
}
@Override
protected void onPause(){
super.onPause();
if(myWebView != null){
myWebView.onPause();
myWebView.pauseTimers();
myWebView.loadUrl("javascript:(window.onload = function(){onPause();})()");
}
}
@Override
protected void onResume(){
super.onResume();
TenjinSDK instance = TenjinSDK.getInstance(this, TenjinApiKey);
instance.connect();
if(myWebView != null){
myWebView.onResume();
myWebView.resumeTimers();
myWebView.loadUrl("javascript:(window.onload = function(){onResume();})()");
}
}
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void JSshowInterstitialVideo(){
Log.i(TAG,"JSshowInterstitialVideo called in the app jsinterface");
displayLoadedAd();
}
}
Я пытался исправить это в течение нескольких дней
Спасибо за любую помощь.