728x90

https://docs.page/invertase/react-native-google-mobile-ads

 

React Native Google Mobile Ads

 

docs.page

 

ios, android 

react native에서 셋팅하는 법~!

 

1. 설치하기

# Install the admob module
yarn add react-native-google-mobile-ads

2. 

app.json 파일에 추가하기

// <project-root>/app.json
{
  "react-native-google-mobile-ads": {
    "android_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
    "ios_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx"
  }
}

 

각 앱 id는 애드몹에서 받아와야한다. 

애드몹 계정 생성하기~!

(참고로 애드몹 계정 생성할 때 개인/법인 잘 선택해야함. 계좌 유형에서 개인에서 법인으로 바꾸고 싶었는데 안되어서

삭제하고 다시 만듦...유형 바꿀 수 없다고 해서!!!)

 

3. 애드몹 계정 생성 후 앱 ID 받아서 app.json파일에 넣기

앱추가하기: 앱 > 앱 추가

앱 ID 받아오기 : 앱> 앱 설정 > 앱 ID

4. SKAdNetwork를 활성화하여 전환 추적(iOS)
"Google 모바일 광고 SDK는 IDFA를 사용할 수 없는 경우에도 Google 및 참여하는 제3자 구매자가 앱 설치를 기여할 수 있는 Apple의 SKAdNetwork를 사용하여 전환 추적을 지원합니다. 프로젝트 app.json 파일 내에서 50개의 필수 SKAdNetwork 식별자를 추가합니다."

 

아래처럼 추가

{
  "react-native-google-mobile-ads": {
    "android_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
    "ios_app_id": "ca-app-pub-xxxxxxxx~xxxxxxxx",
    "sk_ad_network_items": [
      "cstr6suwn9.skadnetwork",
      "4fzdc2evr5.skadnetwork",
      "4pfyvq9l8r.skadnetwork",
      "2fnua5tdw4.skadnetwork",
      "ydx93a7ass.skadnetwork",
      "5a6flpkh64.skadnetwork",
      "p78axxw29g.skadnetwork",
      "v72qych5uu.skadnetwork",
      "ludvb6z3bs.skadnetwork",
      "cp8zw746q7.skadnetwork",
      "c6k4g5qg8m.skadnetwork",
      "s39g8k73mm.skadnetwork",
      "3qy4746246.skadnetwork",
      "3sh42y64q3.skadnetwork",
      "f38h382jlk.skadnetwork",
      "hs6bdukanm.skadnetwork",
      "prcb7njmu6.skadnetwork",
      "v4nxqhlyqp.skadnetwork",
      "wzmmz9fp6w.skadnetwork",
      "yclnxrl5pm.skadnetwork",
      "t38b2kh725.skadnetwork",
      "7ug5zh24hu.skadnetwork",
      "9rd848q2bz.skadnetwork",
      "y5ghdn5j9k.skadnetwork",
      "n6fk4nfna4.skadnetwork",
      "v9wttpbfk9.skadnetwork",
      "n38lu8286q.skadnetwork",
      "47vhws6wlr.skadnetwork",
      "kbd757ywx3.skadnetwork",
      "9t245vhmpl.skadnetwork",
      "a2p9lx4jpn.skadnetwork",
      "22mmun2rn5.skadnetwork",
      "4468km3ulz.skadnetwork",
      "2u9pt9hc89.skadnetwork",
      "8s468mfl3y.skadnetwork",
      "av6w8kgt66.skadnetwork",
      "klf5c3l5u5.skadnetwork",
      "ppxm28t8ap.skadnetwork",
      "424m5254lk.skadnetwork",
      "ecpz2srf59.skadnetwork",
      "uw77j35x4d.skadnetwork",
      "mlmmfzh3r3.skadnetwork",
      "578prtvx9j.skadnetwork",
      "4dzt52r2t5.skadnetwork",
      "gta9lk7p23.skadnetwork",
      "e5fvkxwrpn.skadnetwork",
      "8c4e2ghe7u.skadnetwork",
      "zq492l623r.skadnetwork",
      "3rd42ekr43.skadnetwork",
      "3qcr597p9d.skadnetwork"
    ]
  }
}

배너 광고를 쓸 것이기에 

 

5. 애드몹에서 배너광고 생성

앱 > 광고 단위 > 광고 단위 추가

배너 선택해서 추가

추가하면 

광고 단위 ID 가 나옴

 

6. 앱에 배너광고 붙이기

 

 

원하는 화면에 다음과 같이 붙이기

ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy 이 자리에 

광고 단위 ID  넣기

import React from 'react';
import { BannerAd, BannerAdSize, TestIds } from 'react-native-google-mobile-ads';

const adUnitId = __DEV__ ? TestIds.BANNER : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';

function App() {
  return (
    <BannerAd
      unitId={adUnitId}
      size={BannerAdSize.ANCHORED_ADAPTIVE_BANNER}
      requestOptions={{
        requestNonPersonalizedAdsOnly: true,
      }}
    />
  );
}

--

나는 android , ios 각각 광고단위ID가 있어서 다음과 같이 넣어줌. 

import {Platform } from 'react-native'

const unitId =
  Platform.OS === 'ios'
    ? 'ca-app-pub-....'
    : 'ca-app-pub-....'
    
    
 
 const Home = ()=>{
 return <>  <BannerAd
          // unitId={TestIds.BANNER}
          unitId={unitId}
          size={BannerAdSize.ANCHORED_ADAPTIVE_BANNER}
        />
        </>
 }
 export default Home

 

 

7. 부정클릭 막기 

테스트 기기 등록

앱>설정>기기 테스트

 

 

안드로이드: 설정>Google>광고>이 기기의 광고ID
iOS: idfa 추출가능한 앱 설치(예: TUNE) >IFA(IDFA)

 

이렇게 가져오면 됨. 근데 IOS에서 IFA가 안뜬다?

하면 설정에서 

앱 추적 권한을 허용하면 된다~!~!

 

부정클릭 막는 이유 -

애드몹에서 부정클릭으로 간주하면 앱이 정지될 수 있다고 함!

같은 IP주소도 확인하고 패턴으로 인위적은 클릭을 감지한다고..

 

--

번외)

 

이렇게 보면 간단하지만..

ios빌드는 잘되어도

안드로이드 빌드가 상당히 힘들었다..

 

1. 모듈의 종속성이 중복되어서 일어난 빌드 에러

Duplicate class com.google.android.gms.measurement.internal.zzit found in modules 블라블라

 

 

app/build.gradle 파일에서

 

이런 식으로 해당 라이브러리 쓸 때 중복되는 애들을 제외시키는 exclude를 추가해봤는데도 안되었음

implementation('com.example:my-library:1.0') {
    exclude group: 'com.google.android.gms'
}

내가 쓰고 있는 모듈의 종속성 확인하는 방법 명령어 (./gradlew clean 이거는 캐시 지우는거~)

cd android && ./gradlew clean && ./gradlew app:dependencies

 

1-1. 해결방법

app/build.gradle 파일 하단에 이거 추가함

버전을 고정으로 박아둠. 

해결책을 chatgpt로 찾았다!


configurations.all {
  resolutionStrategy {
    force 'com.google.android.gms:play-services-ads:20.4.0'
    force 'androidx.work:work-runtime:2.7.0'
  }
}

2. react-native-google-mobile-ads 라이브러리 말고 다른 대안?

 

안드로이드 빌드해결 못하고 눈을 돌려 firebase로 애드몹 연동해서 쓸까했지만...

react-native-firebase를 깔고 보니

"Firebase SDK에서 Admob을 더이상 지원하지 않습니다. 따라서 최신 react-native-firebase를 사용하면 Admob을 사용할 수 없습니다."라 해서 다시 원점으로 돌아왔었음.

 

react-native-admob-native-ads 

추가로 찾아본 이 라이브러리는 내가 썼던 애랑 같은 라이브러리라고 함.

 

 

 

 

728x90
728x90

reactnative 설치 (xcode깔려있어야함.)

yarn ios 로 빌드 되는지 확인 !

 

 

빌드 fail경우 

cd ios

pod deintegrate (pods폴더 삭제)

pod cache clean --all (캐시 삭제)

(혹시 안되면 pod install --repo-update)

xcode preference에 들어가서 derived 폴더 안에 삭제. 

이거는 pod install 하면 다시 생김! 

(뭔말인지 모르겠으면 밑에 링크 참고)

 

yarn 

yarn ios

 

 

 

이제 

 

firebase project만들기

https://firebase.google.com/

 

Firebase

Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다.

firebase.google.com

 

Add project

 

프로젝트 이름 넣고 

디폴트 내 계정으로 시작!

 

 

 

다음부터는 쭉 따라하면 되는데 

번들id는 xcode에서 가져와서 붙여넣기 하면 된다. 

(xcode에서 원하는 프로젝트파일 열고, 왼쪽의 프로젝트 파일 누르면 이거 뜸

General 들어가서 

Bundle Identifier 의 값을 복붙하면 됨다. )

 

 

 GoogleService-Info.plist 파일을 

firebase 프로젝트 만드는 곳에서 다운받아서

프로젝트 안에 넣는다 (위치는 거기서 알려줌.)

 

 

그다음에 

AppDelegate.m

에 

 

#import <Firebase.h>

와 

[FIRApp configure];

만 추가!

 

[FIRApp configure]; 이거는 (Bool)로 어플리케이션 실행하는 함수로 보이는 거 하단에 {} 넣어줌. 

위치는 마찬가지로 프로젝트 설명란에 있는데 각자 코드에 맞게 넣으면 된다..

 

 

특이점은 

appPackage를 다운받지 않았다. 

다음단계에서 링크로 들어가서 analytics다운 받는게 있는데 그걸 하지 않고

 

yarn add @react-native-firebase/app

yarn add @react-native-firebase/analytics

 

로 추가했다. (여기에 이미있다고함..)

 

 

아 그리고 analytics는 app과 같은 버전으로 맞춰줘야한다!

 

 

그리고 firebase.json파일을 보면

 

// <project-root>/firebase.json
{
  "react-native": {
    "analytics_auto_collection_enabled": false
  }
}

 

 

false로 꺼져있다.

잘은 모르겠지만 이게  GDPR compliance 정책상으로 꺼져있다고 한다.

앱실행될때 자동으로 집계하게끔 하는게 꺼져있는 것이다. 

대신 이벤트처리하듯

홈화면 들어갈 때 메서드를 이용해서 집계하는 방법을 쓰면 된다.

 

 

To re-enable analytics (e.g. once you have the users consent), call the setAnalyticsCollectionEnabled method:

import { firebase } from '@react-native-firebase/analytics';
// ...
await firebase.analytics().setAnalyticsCollectionEnabled(true);

https://rnfirebase.io/analytics/usage

 

Analytics | React Native Firebase

Copyright © 2017-2020 Invertase Limited. Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. Some partial documentation, under the

rnfirebase.io

 

 

프로젝트 예시 홈화면 들어갈때 추가되도록 했다. 

  const activateAnalytics = async () => {
    await firebase.analytics().setAnalyticsCollectionEnabled(true)
  }
  useEffect(() => {
    activateAnalytics()
  }, [])

 

 

 

 

 

 

 

 

 

 

에러 해결방법 참고한 것들

https://developer.apple.com/forums/thread/703823

 

Xcode 13.3 spits "Requested but di… | Apple Developer Forums

MrtnFbg's answer inspired me to read more about redirections of streams. So I read about Linux STDOUT STDERR. In this specific case when I run this command, there is an output and there are some errors. Since I ran this command on terminal and on terminal

developer.apple.com

https://positiveko-til.vercel.app/til/react-native/error65.html

 

에러 해결🔑 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. | Positiveko

에러 해결🔑 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. 리액트 네이티브에서 가장 유명한 에러가 아닐까.. (아니 나참.. 리네 = 에러 픽스 90 + 개발 10 같다.. 후) 이

positiveko-til.vercel.app

 

 

 

 

 

https://rnfirebase.io/analytics/usage

 

Analytics | React Native Firebase

Copyright © 2017-2020 Invertase Limited. Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. Some partial documentation, under the

rnfirebase.io

 

728x90

+ Recent posts