NCMBの管理画面を使いやすくするChrome機能拡張の紹介（プッシュ通知のエクスポート）

NCMBでは管理画面を提供していますが、時々物足りないことがあります。この機能があったらもっと便利なのに…と思いつつ、使っている方もいることでしょう。

そこで、その足りない機能を補足するGoogle Chrome機能拡張を開発しはじめました。

## 動作について

動作は以下のようになります。機能拡張をインストールしていると、プッシュ通知の画面でレポートDLというボタンが表示されます。このボタンをクリックすると、表示されているプッシュ通知一覧のJSONダウンロードと、開封率などのレポートデータがダウンロードできます。

![push.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/a6e26a48-b7ff-31ae-3e70-227cc42e4a11.gif)


## インストール

[Chrome機能拡張のページからインストール](https://chrome.google.com/webstore/detail/ncmb-extension/dglkhlplcpmnbgodhbngcmdfpojkbdnc?hl=ja&authuser=0)してください。

## 制限

この機能拡張は [https://console.mbaas.nifcloud.com](https://console.mbaas.nifcloud.com/) 以下でのみ動作します。また、この機能は管理画面のAPIを使っていますので、APIコール数を消費しません。また、ACLは無視して処理されます。

プッシュ通知は表示されているものについてのみダウンロードされます。つまり一度にダウンロードできるのは最大100件までになります。

ダウンロードされるJSONファイルのフォーマットは以下のようになります。

```json
[
   {
      "objectId": "BAxO0kEGutNDdjmc",             // オブジェクトID
      "deliveryTime": {                           // 配信日時
         "__type": "Date",
         "iso": "2023-02-27T12:22:00.000Z"
      },
      "target": [                                 // 配信対象
         "android"
      ],
      "searchCondition": {                        // 絞り込み条件
         :
      },
      "message": "これはお知らせです",                // メッセージ本文
      "userSettingValue": null,                   // ユーザー設定値
      "deliveryExpirationDate": null,             // 配信期限日時
      "deliveryExpirationTime": "10 day",         // 配信期限
      "deliveryPlanNumber": 0,                    // 配信予定数
      "deliveryNumber": 0,                        // 配信数
      "status": 2,                                // ステータス
      "action": "",                               // アクション（Android用）
      "badgeIncrementFlag": true,                 // バッジインクリメントフラグ
      "sound": null,                              // サウンド（iOS用）
      "contentAvailable": false,                  // サイレントプッシュ用
      "title": "最初のお知らせ",                     // タイトル
      "createDate": "2023-02-26T12:23:30.396Z",   // 作成日時
      "updateDate": "2023-02-26T12:23:30.397Z",   // 更新日時
      "acl": {                                    // アクセス権限
        :
      },
      "dialog": false,                            // ダイアログ表示フラグ
      "richUrl": null,                            // リッチプッシュ通知用URL
      "error": {},                                // エラー情報
      "badgeSetting": null,                       // バッジ設定
      "category": null,                           // カテゴリー
      "report": {                                 // レポート情報
         "openStatus": {
            "totalDeliveryNumber": 2,             // 総配信数
            "totalOpenNumber": 1,                 // 総開封数
            "pushDeliveryNumber": 0,              // 今回のプッシュ通知の配信数
            "pushOpenNumber": 0                   // 今回のプッシュ通知の開封数
         },
         "openData": [
            {
               "objectId": "BK40z1FUGw4s5xIa",           // 開封データのobjectId
               "pushId": "XR4hOYxaJXJEsNq9",             // プッシュ通知のobjectId
               "openDateTime": "2022091417",             // 開封日時
               "totalOpenNumber": 1,                     // 開封数
               "iosOpenNumber": 0,                       // iOSの開封数
               "androidOpenNumber": 1,                   // Androidの開封数
               "createDate": "2022-09-14T08:35:02.399Z", // 作成日時
               "updateDate": "2022-09-14T08:35:02.399Z"  // 更新日時
            }
         ]
      }
   },
   : // 以下繰り返し
]
```

## コードについて

機能拡張のコードは[NCMBMania/chrome-extension](https://github.com/NCMBMania/chrome-extension)にアップロードしてあります。ライセンスはMIT Licenseです。依存ライブラリとして[URL.js](https://github.com/duzun/URL.js)を使っています（こちらもMIT Licenseです）。

## まとめ

機能的にはまだ多くありませんが、徐々に機能を追加していきます。Google ChromeでmBaaSの管理画面を利用されている方はぜひお使いください。

[mBaaSでサーバー開発不要！ \| ニフクラ mobile backend](https://mbaas.nifcloud.com/)