expo 에 있는 광고 admob 모듈을 설치해준다
expo install expo-ads-admob
구글 애드몹에 가입하고, 앱에 광고를 달기 위해 앱을 등록한다
등록하면, 내가 올리고 싶은 앱의 ID 키가 발행된다. 그 키를 가지고 app.json 파일에 가서 adroid : { value } 에 가서 자신의 앱의 키 값을 넣는다.
"googleMobileAdsAppId": "키 값 넣기"
여기서 tip!
추가한 앱의 ID가 보이지 않는다면, 구글 애드몹 화면의 가장 왼쪽의 메뉴들에서
앱 버튼을 누르고,
모든 앱 보기 버튼을 눌러준다!
그러면 이렇게 등록한 앱들의 ID가 나온다!
애드몹을 설정하는 코드들!
우선 설치한 expo admob에서 필요한 코드들을 import 시킨다.
import { setTestDeviceIDAsync, AdMobBanner, //요거 사용함 AdMobInterstitial, PublisherBanner, AdMobRewarded } from 'expo-ads-admob';
그리고 카드들이 보이는 곳 바로 아래에 ad를 보이게 만들어준다.
이때, 3항 연산자로 Platform이 IOS인지, Adroid인지 확인하여 분리된 광고 를 보여지게 한다.
<View style={styles.cardContainer}> {/* 하나의 카드 영역을 나타내는 View */} { cateState.map((content,i)=>{ return (<Card content={content} key={i} navigation={navigation}/>) }) } {Platform.OS === 'ios' ? ( <AdMobBanner bannerSize="fullBanner" servePersonalizedAds={true} adUnitID="ca-app-pub-3233048070306066/8476925399" style={styles.banner} /> ) : ( <AdMobBanner bannerSize="fullBanner" servePersonalizedAds={true} adUnitID="ca-app-pub-3233048070306066/3033027021" style={styles.banner} /> )} </View>
배너의 사이즈와 위치 등은 개발자 마음대로 설정할 수 있다!
전면 배너는 AdMobInterstitial 를 활용한다.
전면 배너를 설정하기 위해서는 사전 설정이 조금 필요하다.
useEffect(()=>{ // Card.js에 들어오자마자 전면 광고 준비하느라 useEffect에 설정 //애드몹도 외부 API 이므로 실행 순서를 지키기위해 async/await 사용! //안드로이드와 IOS 각각 광고 준비 키가 다르기 때문에 디바이스 성격에 따라 다르게 초기화 시켜줘야 합니다. Platform.OS === 'ios' ? AdMobInterstitial.setAdUnitID("ca-app-pub-3233048070306066/4844161513") : AdMobInterstitial.setAdUnitID("ca-app-pub-3233048070306066/5948880695") AdMobInterstitial.addEventListener("interstitialDidLoad", () => console.log("interstitialDidLoad") ); AdMobInterstitial.addEventListener("interstitialDidFailToLoad", () => console.log("interstitialDidFailToLoad") ); AdMobInterstitial.addEventListener("interstitialDidOpen", () => console.log("interstitialDidOpen") ); AdMobInterstitial.addEventListener("interstitialDidClose", () => { //광고가 끝나면 다음 코드 줄이 실행! console.log("interstitialDidClose") navigation.navigate('DetailPage',{idx:content.idx}) }); },[])
지금 하고 있는 앱에서는
AdMobInterstitial.addEventListener("interstitialDidClose", () => { } 이 코드를 사용할 건데,
avigation.navigate('DetailPage',{idx:content.idx}) 이렇게 광고 후에 DetailPage로 이동하게 한다.
그럼 이렇게 광고에 관련한 함수들은 작성했는데, 어떻게 광고가 보이게 할 것인가?
위에 코드들은 광고 자체에 관련한 함수였다. 이제는 광고를 보여주는 코드를 작성해야 한다.
const goDetail = async () =>{ await AdMobInterstitial.requestAdAsync({ servePersonalizedAds: true}); await AdMobInterstitial.showAdAsync(); }
async () => { await } 함수로 세팅한 차례대로 함수가 실행될 수 있게 해준다.
⠀
앱을 배포하려면 필요한 것들이 있다
1) 앱 로고
2) 스플래시 스크린(앱 시작 초기 화면)
3) 앱 마켓에 올릴 설명 이미지
4) Expo의 도움을 빌려 쉽게 준비 가능한 앱 버전 관리, 안드로이드, iOS 인증서 관리 등
스플래시 스크린은
앱 폴더의 asset 파일 안에 있는 splash.png 파일을 설정하고 싶은 스플래시 사진으로 변경한다.
(꼭 png 파일로 저장하기!!)
내가 설정한 이미지 ↓
스플래시 스크린과 사진 만들기와 동일하게 이미지를 만드는데, icon.png 로 저장해 주면 된다.
내가 설정한 아이콘 이미지 ↓
icon이 적용된 모습
"expo": {
"name": "sparta-myhoneytip-rim",
"slug": "sparta-myhoneytip-rim",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"web": {
"favicon": "./assets/favicon.png"
},
"ios": {
"supportsTablet": true,
"buildNumber": "1.0.0",
"bundleIdentifier": "com.myhoneytip.rim",
"config": {
"googleMobileAdsAppId": "ca-app-pub-3233048070306066~8707384905"
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
},
"package": "com.myhoneytip.rim",
"versionCode": 1,
"config": {
"googleMobileAdsAppId": "ca-app-pub-3233048070306066~2706278875"
}
}
}
안드로이드 - 구글 플레이 스토어와 ios - 앱 스토어에 앱을 올리는 방법이 다르다는 것을 알게 되었다. 또한, 그 방법이 매우 복잡하다는 사실도 알게 되었다.. :(
라이센스도 구매해야 해서 나는 아직 연습하는 학생 신분이라 조금 더 앱 개발에 확신이 생기고, 정말 배포하고 싶은 앱을 개발했을 때 구매하여 배포하고 싶어 직접 배포하지는 않았다.
하.지.만.
내가 만든 앱을 블로글에 남겨보려 한다. (ㅎㅎ)
녹화 영상
취지&설명
- 이 앱은 일상생활에서 적용해 볼 수 있는 꿀팁들을 담고 있는 앱입니다!
(앱개발 종합반에서 함께 만들었습니다. :-) )
기술 설명
어려웠던 점 & 극복 방법
5주간 앱개발 수업 후기
앱 개발은 정말 코딩 지식이 많은 사람들만 개발할 수 있고, 나는 하기 어려운 개발이라고 생각했었는데, 알려주시는 방법대로 해보니 (물론 내용이 쉬운 건 아니었지만 ㅎㅎ) 생각보다 쉽게 앱을 만들어 볼 수 있었고, 다양한 기능들과 expo, yarn, firebase 등을 배우고 다뤄볼 수 있어서 소중한 경험이 된 것 같습니다.
정말 상세하게 하나하나 다 알려주시고, 코드들도 다 알려주셔서 실습해보는데 정말 도움이 많이 되었던 것 같습니다. 상세하게 알려주셔서 따라가고 이해하기 정말 도움이 많이 되었던 것 같았던 수업이었습니다 :)
(안드로이드 스튜디오를 처음에 설치하라고 하셔서 깔았는데,, 언제 사용하는 거죠..?)