본문 바로가기

Flutter 프로그래밍/플러그인 사용

Failed to load ad: 0 - Device ID 얻어오기

반응형

구글 admob 을 적용시켜서 테스트를 하다 보면

Failed to load ad: 0 라는 메세지를 받게 된다.

 

원인은 안드로이드/iOS 폰에서 직접 테스트 할 때 정식으로 배포된 앱이 아닌 경우 광고를 불러오지 못해서다.

이때 test로 사용할 장치 device id 를 admob 에 미리 넣어놓으면 해당 id를 가진 장치에서는 test ad가 뜬다.

 

 

Java / Kotlin

device id 를 얻는 방법은 java 와 kotlin 관련 문서가 많다.

 

해당 장치에서 앱을 실행하고 logCat 에서 adRequest 를 검색해보면 아래처럼 나온다고 한다. 여기서 보이는 Device ID를 복사해서 쓰면 된다.

 

 12-29 11:18:25.615: I/Ads(2132): To get test ads on this device, call adRequest.addTestDevice("D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXX");".

 

 

 

Flutter

 

Flutter / 안드로이드 스튜디오 사용중인데 logCat 에서 잘 안보여서 다른 방법을 찾아봤다.

device_id 를 얻어오는 많은 plugin 이 있는데 그중 하나를 골라서 사용하면 된다.

 

아래 plugin을 사용해봤다.

 

 

 

플러그인 설치

패키지를 pubspec.yaml 파일에 넣어주고 pubget 을 해준다.

dependencies:
  device_id: ^0.2.0

 

사용을 원하는 파일에 import 

import 'package:device_id/device_id.dart';

 

예제 코드

아래와 같이 DeviceId.getID 로 deviceID를 얻어와서 사용하면 된다.

import 'package:flutter/material.dart';
import 'package:device_id/device_id.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String deviceID;

  void getDeviceID() async {
    String deviceId = await DeviceId.getID;
    deviceID = 'Device ID is $deviceId';
    print('Device ID is $deviceId');
  }

  @override
  Widget build(BuildContext context) {
    getDeviceID();
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('$deviceID'),
        ),
      ),
    );
  }
}

 

반응형