ネットワーク復旧後にモバイルアプリの計装データが送信されることを確認してみた！

# 概要
モバイルアプリをNew Relicのエージェントを使ってモニタリングしている際にネットワークがオフラインになるとその間のデータはNew Relicに送付できない可能性があります。

New Relic アップデート(2024年3月)の中で、**『オフラインストレージでデータロストを最小限に』** というアップデートがあったので、今回はAndroidのエミュレーターを使ってイベントデータがネットワーク復旧後に送信されることを確認してみたいと思います！

:::note info
このアップデートの詳細はこちら
[New Relic アップデート(2024年3月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202403 "New Relic アップデート(2024年3月)")
:::


# 手順
## 1. AndroidのアプリにNew Relicのエージェントを設定
今回はAndroid StudioのNew Projectから[Empty Activity]を作成して、New RelicのAndroidエージェントをインストールしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/436bf310-67f3-dd2f-0b50-1be9db60cc14.png)

Androidエージェントのインストール方法は下記を参照ください。
個人的には[ガイド付きインストール](https://onenr.io/0kjnEoryzRo)を使っていただくとインストールしやすいかと思います。

https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle/

:::note warn
オフラインストレージに対応しているAndroidエージェントは7.3.0以降になります。
:::

一点、AndroidエージェントとiOSエージェントはデフォルトではオフラインストレージ機能はオフになっているので、フェーチャーフラグでオンにする必要があります。

https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/configure-settings/#android-offline-storage

今回は、onCreateでエージェントをスタートさせるところでフラグをオンにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/33dbec11-9a52-5a49-1a84-b2e07bb281a9.png)

## 2. Androidエミュレーターでモバイルアプリを起動
ビルドしてモバイルアプリをエミュレーターで実行します。
今回はシンプルに「Hello Android!」が表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/c72adfc9-a7bd-d277-636b-8a148be6eed6.png)


## 3. New Relic上でイベントデータを確認
Mobile > Explorer EventsでMobileイベントが入ってきていることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/a9928e6f-38e3-a12f-9b13-5e1e60b375c4.png)

このタイミングでは **20:55:49** までのデータを確認しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/726b4727-5a4f-9985-77de-6d21a88bb8ac.png)

## 4. Androidエミュレーターをオフラインに変更
Androidエミュレーター上で、インターネットをオフに設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/8fe06b65-acae-c98d-9053-c9aed3e50d9a.png)



## 5. アプリの起動と終了を複数回実行
オフラインの状態でアプリの起動と終了を複数回実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/e8cab5ea-6bd2-4457-d97e-a76891655ef0.png)

## 6. New Relic上でイベントデータを確認

このタイミングではオフライン中のデータが入ってこないので、さきほどと同様に **20:55:49** までのデータが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/726b4727-5a4f-9985-77de-6d21a88bb8ac.png)

::: note warn
ここで数分待ってデータが入って来ないことを確認ください。
:::

## 7. Androidエミュレーターをオンラインに戻す
Androidエミュレーター上で、インターネットをオンに設定して、アプリを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/c7e0b46f-4f61-1ccd-947b-fa55aad83341.png)


## 8. New Relic上でイベントデータを確認

オフライン中のイベントデータもNew Relicに送られていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227243/c1f867e4-8d2b-fa83-597f-7f4756fe059e.png)


# まとめ
『オフラインストレージでデータロストを最小限に』というアップデートについて、Androidのエミュレーターを使ってイベントデータがネットワーク復旧後に送信されることを確認してみました！

ちなみに、オフラインストレージで使用するストレージサイズは下記で変更可能となっています。

https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile/mobile-sdk/set-max-offline-storage/

:::note info
最新のアップデートの詳細はこちら。[New Relic アップデート(2024年3月)
](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202403 "New Relic アップデート(2024年3月)")
:::

:::note info
[New Relic株式会社のQiita OrganizationOrganization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::