【Flutter × Admob이 ListView에 배너 표시
Fluter용 AdMob 패키지
Flutter가 준비한 admob 패키지는 3가지 종류가 있습니다.
광고는 위젯으로 볼 수 없고 화면 위쪽, 아래쪽에 고정되어 있다.
2021년 8월 2일은 현재 DISCONINUED여서 앞으로의 적극적인 개발을 기대할 수 없다.
광고를 하나의 위젯으로 처리할 수 있기 때문에 좋아하는 곳에서 광고를 실현할 수 있다.
후원자가 부족해서 개발에 그다지 적극적으로 나서지 못했다.
광고는 위젯으로 처리할 수 있고 개발에도 적극적이다.
대망의 포장.
이번에 세 번째 Google입니다.mobile_다음은ads를 이용한 광고 실시 상황을 총괄한다.
전제 조건
설치 단계
0. AdMob 등록
상술한 내용을 방문하여 필요한 사항을 기입하다.
Admob에 대한 사용자 로그인이 완료되었습니다.
iOS 애플리케이션 구성
사이드바의 "적용"→ "프로그램에 로그인한 후 사용"
먼저 iOS부터 등록합니다.
응용 프로그램 이름 (bundleId 따위가 아니라 무엇이든 가능)과 사용자 지표를 검사합니다. "추가 응용 프로그램"
iOS 애플리케이션이 추가되었습니다.
Android 응용 프로그램 설정
응용 프로그램 추가에서 안드로이드 응용 프로그램으로의 설정도 마찬가지입니다.
안드로이드를 선택합니다.그 외에는 모두 마찬가지다.
iOS와 안드로이드 두 앱이 모두 완성되었다.
애플리케이션 ID 확인
응용 프로그램 - 모든 응용 프로그램 표시
각 응용 프로그램의 ID를 확인할 수 있습니다.
광고 단원의 제작
다음은 광고 단원을 만듭니다.
사이드바의'응용'→'광고 단원'
다양한 광고 포맷이 있었지만, 이번에 리스트뷰에 광고를 삽입하려고'배너'를 선택했다.
광고 단원의 명칭을 기입하다.
광고 단원을 만들고 ID를 생성했습니다.
앱 아이디랑 헷갈린 것 같은데 다른 거예요.
アプリID・・・それぞれのアプリに一つだけ存在
広告ユニットID・・・作成した広告ごとに存在(複数生成できる)
iOS 애플리케이션의 AdMob이 성공적으로 등록되었습니다.안드로이드 앱도 광고 단원을 미리 만들어두자.
1. 포장 도입
Flutter를 사용하여 구현합니다.다음 포장은pubspec입니다.yaml,pub get에 추가합니다.
pubspec.yaml
dependencies:
flutter:
sdk: flutter
・
・
・
google_mobile_ads: ^0.13.2+1
2.iOS/Android의 설정
iOS는 ios/Runner/Info입니다.plist를 다음과 같이 업데이트합니다.
Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
~~~~~~~~~
<key>GADApplicationIdentifier</key>
<string>iOSアプリID</string>
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
</array>
~~~~~~~~~
</dict>
</plist>
안드로이드는android/app/src/main/Android Manifest입니다.다음은 xml 내의 업데이트입니다.AndroidManifest.xml
<manifest xmlns:android=""
package="">
<application
android:label=""
android:icon="">
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="AndroidのアプリID"/>
</application>
</manifest>
3. 광고의 실현
패키지 초기화
우선main 함수에서 초기화 처리를 진행합니다.
void main() {
WidgetsFlutterBinding.ensureInitialized();
MobileAds.instance.initialize(); // 追加
runApp(const MyApp());
}
광고의 초기화(배너)
다음은 광고 부품의 초기화입니다.
BannerAd 클래스가 인스턴스화되면load();호출 방법을 통해 플래카드 광고를 읽다.
// バナー広告をインスタンス化
BannerAd myBanner = BannerAd(
adUnitId: getTestAdBannerUnitId(),
size: AdSize.banner,
request: const AdRequest(),
listener: const BannerAdListener();
);
// バナー広告の読み込み
myBanner.load();
getTestAdBannerUnitId()
는 플랫폼(iOS/Android)에 따라 프레젠테이션용 광고 ID를 반환합니다. // プラットフォーム(iOS / Android)に合わせてデモ用広告IDを返す
String getTestAdBannerUnitId() {
String testBannerUnitId = "";
if (Platform.isAndroid) {
// Android のとき
testBannerUnitId = "ca-app-pub-3940256099942544/6300978111"; // Androidのデモ用バナー広告ID
} else if (Platform.isIOS) {
// iOSのとき
testBannerUnitId = "ca-app-pub-3940256099942544/2934735716"; // iOSのデモ用バナー広告ID
}
return testBannerUnitId;
}
테스트 모드를 사용하지 않고 여러 광고를 클릭하면 계정이 무효 이벤트로 경고될 수 있습니다.개발할 때는 시위 행진용 광고 단원을 반드시 사용해야 한다.
광고의 종류
iOS
Android
플래카드
ca-app-pub-3940256099942544/2934735716
ca-app-pub-3940256099942544/6300978111
리셋
ca-app-pub-3940256099942544/1712485313
ca-app-pub-3940256099942544/5224354917
로컬 이점
ca-app-pub-3940256099942544/3986624511
ca-app-pub-3940256099942544/2247696110
상기 이외의 시연용 광고 ID는 아래에서 확인할 수 있다.
배너를 사용하여 Widet 표시
load()
를 호출한 후 AdWidget
를 사용하면 광고를 표시할 수 있습니다.AdWidget
StatefulWidget을 계승하여 다른 Widget과 같이 UI에 삽입할 수 있습니다.AdWidget(ad: myBanner),
플래카드가 나왔다.
ListView에 광고 삽입
마지막으로 ListView에 광고가 삽입된 예를 살펴보겠습니다.
ListView.builder의 index가 5의 배수일 때 광고 삽입
이런 코드를 써 보았다.
timeline_page.dart
/// リスト表示部分
child: ListView.builder(
itemCount: tweets.length,
itemBuilder: (context, index) {
final tweet = tweets[index];
return Column(
children: [
// indexが 5 の倍数の場合
index % 5 == 0
? Container(
color: Colors.white,
height: 64.0,
width: double.infinity,
child: AdWidget(ad: myBanner),
)
: const SizedBox(),
// ツイート部分
InkWell(
onTap: () async {
await Navigator.push<dynamic>(
context,
MaterialPageRoute<dynamic>(
builder: (context) =>
TweetDetailPage(tweet),
),
);
},
child: TweetCardWidget(
tweet: tweet,
tag: kTimeLineHeroTag,
),
),
],
);
},
),
목록에 제목 광고를 삽입할 수 있습니다.흔히 볼 수 있는'배너를 화면 위쪽과 아래쪽에 고정한다'는 것과 비교하면 이용자들에 대한 스트레스도 다소 덜하겠죠.
앞으로 Admob 설치 담당자의 참고가 되었으면 좋겠습니다.
끝까지 읽어주셔서 감사합니다.
참고 자료
Reference
이 문제에 관하여(【Flutter × Admob이 ListView에 배너 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mamushi/articles/flutter_ads_in_listview텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)