Я интегрирую нативную рекламу AdMob в свое приложение Flutter и столкнулся с проблемой, когда нажатие в любом месте объявления запускает соответствующее действие. Однако я хочу, чтобы действие вызывалось только тогда, когда пользователь нажимает кнопку действия в объявлении.
Вот фрагмент моего кода Android, связанный с отображением собственного объявления: Я новичок в Android. . Я скомпилировал этот код, просматривая документацию и используяchatgpt.
feed_ad_1.xml
FeedItemAdFactory.java
package com.myapp.app;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.gms.ads.nativead.MediaView;
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory;
import java.util.Map;
class FeedItemAdFactory implements NativeAdFactory {
private final Context context;
FeedItemAdFactory(Context context) {
this.context = context;
}
@Override
public NativeAdView createNativeAd(
NativeAd nativeAd, Map customOptions) {
final NativeAdView adView =
(NativeAdView) LayoutInflater.from(context).inflate(R.layout.feed_ad_1, null);
adView.setMediaView((MediaView) adView.findViewById(R.id.ad_media));
adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
String headlineText = nativeAd.getHeadline();
if (nativeAd.getBody() != null) {
headlineText += "\n" + nativeAd.getBody();
}
((TextView) adView.getHeadlineView()).setText(headlineText);
adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
if (nativeAd.getCallToAction() == null) {
adView.getCallToActionView().setVisibility(View.INVISIBLE);
} else {
adView.getCallToActionView().setVisibility(View.VISIBLE);
((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
}
adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
if (nativeAd.getAdvertiser() == null) {
adView.getAdvertiserView().setVisibility(View.INVISIBLE);
} else {
adView.getAdvertiserView().setVisibility(View.VISIBLE);
((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
}
adView.setNativeAd(nativeAd);
return adView;
}
}
Может ли кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в объявлении?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в объявлении?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в нем?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в нем?
p>
Заранее благодарим за любую помощь!
Я попробовал добавить этот фрагмент кода, рекомендованный чатгптом, но это ничего не меняет.
// Wrap CTA button with GestureDetector for click handling
Button ctaButton = (Button) adView.getCallToActionView();
GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override // Remove this annotation
public boolean onTap(View v) {
// Replace with the correct method for getting the click URL from your AdMob library
launch(nativeAd.getClickToAction() /* or appropriate method name */);
return true;
}
});
ctaButton.setOnTouchListener(gestureDetector);
}
// Disable clickability for the NativeAdView
adView.setClickable(false);
adView.setEnabled(false);
// Disable clickability for other views
adView.getHeadlineView().setClickable(false);
adView.getMediaView().setClickable(false);
adView.getAdvertiserView().setClickable(false);
// Enable clickability for the call-to-action button
adView.getCallToActionView().setClickable(true);
adView.getCallToActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nativeAd.performClick(new Bundle());
}
});
Подробнее здесь: https://stackoverflow.com/questions/785 ... ut-want-ac
Нативное объявление Flutter AdMob: действие запускается при нажатии в любом месте объявления, но действие требуется толь ⇐ Android
Форум для тех, кто программирует под Android
1717258901
Anonymous
Я интегрирую нативную рекламу AdMob в свое приложение Flutter и столкнулся с проблемой, когда нажатие в любом месте объявления запускает соответствующее действие. Однако я хочу, чтобы действие вызывалось только тогда, когда пользователь нажимает кнопку действия в объявлении.
Вот фрагмент моего кода Android, связанный с отображением собственного объявления: Я новичок в Android. . Я скомпилировал этот код, просматривая документацию и используяchatgpt.
feed_ad_1.xml
FeedItemAdFactory.java
package com.myapp.app;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.gms.ads.nativead.MediaView;
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin.NativeAdFactory;
import java.util.Map;
class FeedItemAdFactory implements NativeAdFactory {
private final Context context;
FeedItemAdFactory(Context context) {
this.context = context;
}
@Override
public NativeAdView createNativeAd(
NativeAd nativeAd, Map customOptions) {
final NativeAdView adView =
(NativeAdView) LayoutInflater.from(context).inflate(R.layout.feed_ad_1, null);
adView.setMediaView((MediaView) adView.findViewById(R.id.ad_media));
adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
adView.setCallToActionView(adView.findViewById(R.id.ad_call_to_action));
adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
String headlineText = nativeAd.getHeadline();
if (nativeAd.getBody() != null) {
headlineText += "\n" + nativeAd.getBody();
}
((TextView) adView.getHeadlineView()).setText(headlineText);
adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
if (nativeAd.getCallToAction() == null) {
adView.getCallToActionView().setVisibility(View.INVISIBLE);
} else {
adView.getCallToActionView().setVisibility(View.VISIBLE);
((Button) adView.getCallToActionView()).setText(nativeAd.getCallToAction());
}
adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
if (nativeAd.getAdvertiser() == null) {
adView.getAdvertiserView().setVisibility(View.INVISIBLE);
} else {
adView.getAdvertiserView().setVisibility(View.VISIBLE);
((TextView) adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
}
adView.setNativeAd(nativeAd);
return adView;
}
}
Может ли кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в объявлении?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в объявлении?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в нем?
Может кто-нибудь подсказать мне, как обеспечить, чтобы действие, связанное с объявлением, запускалось только тогда, когда пользователь нажимает кнопку действия внутри объявления, а не где-либо в нем?
p>
Заранее благодарим за любую помощь!
Я попробовал добавить этот фрагмент кода, рекомендованный чатгптом, но это ничего не меняет.
// Wrap CTA button with GestureDetector for click handling
Button ctaButton = (Button) adView.getCallToActionView();
GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override // Remove this annotation
public boolean onTap(View v) {
// Replace with the correct method for getting the click URL from your AdMob library
launch(nativeAd.getClickToAction() /* or appropriate method name */);
return true;
}
});
ctaButton.setOnTouchListener(gestureDetector);
}
// Disable clickability for the NativeAdView
adView.setClickable(false);
adView.setEnabled(false);
// Disable clickability for other views
adView.getHeadlineView().setClickable(false);
adView.getMediaView().setClickable(false);
adView.getAdvertiserView().setClickable(false);
// Enable clickability for the call-to-action button
adView.getCallToActionView().setClickable(true);
adView.getCallToActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nativeAd.performClick(new Bundle());
}
});
Подробнее здесь: [url]https://stackoverflow.com/questions/78559060/flutter-admob-native-ad-action-triggered-on-tap-anywhere-within-ad-but-want-ac[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия