クライアント ライブラリをインストールする

AdMob API は HTTP と JSON に基づいて構築されています。そのため、標準の HTTP クライアントから API にリクエストを送信し、レスポンスを解析することができます。

ただし、Google API のクライアント ライブラリを利用すると、言語が適切に統合され、セキュリティが向上し、ユーザー認証に必要な呼び出しがサポートされます。クライアント ライブラリは複数のプログラミング言語で利用可能です。ライブラリを使用すると、HTTP リクエストの設定やレスポンスの解析を手動で行う必要がなくなります。

Google API Client Generator は、Java、PHP、Python、Dart などの言語のクライアント ライブラリを生成できます。Java クライアント ライブラリを生成する手順は次のとおりです。

  1. AdMob API 定義を一時ディレクトリにダウンロードします。
    export ADMOB_LIB_DIR=/tmp/admob_client
    mkdir -p ${ADMOB_LIB_DIR}
    curl -X GET \
        "https://admob.googleapis.com/\$discovery/rest?version=v1" \
        >${ADMOB_LIB_DIR}/admob_api_v1.json
  2. GitHub の Google API Client Generator ページの説明に沿って、generate_library ツールをインストールします。Python 2.7pip が必要です。
    pip install google-apis-client-generator
  3. ライブラリを生成します。
    generate_library \
        --input=${ADMOB_LIB_DIR}/admob_api_v1.json \
        --language=java \
        --output_dir=${ADMOB_LIB_DIR}/java
  4. 生成された java ライブラリを Apache Maven プロジェクトでビルドします。
    cd ${ADMOB_LIB_DIR}/java
    mvn clean install
  5. ライブラリをプロジェクトに追加します。それを使用してネットワーク レポートを取得します。この例では、2019 年 7 月 1 日から 7 月 5 日までのネットワーク レポートを取得し、クリック数、インプレッションあたりの収益、アプリによる見積もり収益額を表示します。
      public static void main(String[] args) {
        ...
        // Check the following docummentation to use OAuth 2.0 in your project.
        // 1. Java Google API Client Libraries;
        // 2. Using OAuth 2.0 with the Google API Client Library for Java pages.
        AdMob adMobClient = createAdMobApiRestClient(...);
        String publisherId = "pub-1234567890123456";
        GenerateNetworkReportRequest networkReportRequest = new GenerateNetworkReportRequest()
          .setReportSpec(
            new NetworkReportSpec()
              .setDateRange(
                new DateRange()
                  .setStartDate(new Date().setYear(2019).setMonth(7).setDay(1))
                  .setEndDate(new Date().setYear(2019).setMonth(7).setDay(5)))
              .setDimensions(Arrays.asList("DATE", "APP"))
              .setMetrics(Arrays.asList("ESTIMATED_EARNINGS", "IMPRESSION_RPM", "CLICKS")));
    
        // Send request to generate network report.
        InputStream networkReport = adMobClient
          .accounts()
          .networkReport()
          .generate("accounts/" + publisherId, request)
          .executeAsInputStream();
    
        ...
      }
    
      // Initialize AdMob client.
      public AdMob createAdMobApiRestClient(HttpTransport httpTransport, JsonFactory jsonFactory, Credential credential) {
        AdMob adMobClient = new AdMob.Builder(
          httpTransport,
          jsonFactory,
          request -> {
            credential.initialize(request);
            request.setParser(new JsonObjectParser(jsonFactory));
          })
          .setRootUrl("https://admob.googleapis.com")
          .build();
      }