MonacaバックエンドマネジメントAPIについて

Monacaでは、プッシュ通知やユーザー管理、データー管理を行えるMonacaバックエンドを提供しています。

Monacaバックエンドでは、アプリから利用できるMonacaバックエンドAPIの他に、サーバーサイドから利用できる [Monacaバックエンド マネジメントAPI](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/) があります。

MonacaバックエンドAPIの利用方法につきましては、[MonacaバックエンドAPI](https://qiita.com/keeey/items/e53d910e94d50536808a)、[MonacaバックエンドAPI メーラーについて](https://qiita.com/keeey/items/0210914325611c4207c9)を参照してください。

Monacaバックエンド マネジメントAPIは、企業向けプランで利用することができます。


# Monacaバックエンド マネジメントAPIの使用例

MonacaクラウドIDEのプロジェクトにMonacaバックエンドを設定することで、プロジェクトからMonacaバックエンド マネジメントAPIを利用することができるようになります。

`Backend Settings` 画面の `マネジメントAPI` 画面にも記載されていますが、Monacaバックエンド マネジメントAPIの使用例は、下記になります。

```sh:curlコマンドでの使用例：
curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Collection.list", "params": {}}'
```

`エンドポイントID` と `マネジメントAPIキー` は、対処プロジェクトのMonacaバックエンドに設定されている値に変更してください。
エンドポイントIDとマネジメントAPIキーは、 Backend Settings画面のマネジメントAPI画面に記載されています。

[Collection.list()](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/collection/#collection-list) メソッドを使用することで、Monacaバックエンドに登録されているコレクションの一覧を取得することができます。


# ユーザー一覧を取得してみる

Monacaバックエンド マネジメントAPIの [ユーザーの管理](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/user/) を使用することで、ユーザーを管理を行うことができます。

```sh:ユーザー一覧の取得例：
curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "User.list", "params": {"page": 1, "itemsInPage": 10, "nameFilter": "user01@example.com"}}'
```

[User.list()](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/user/#user-list) メソッドを使用することで、ユーザーの一覧を取得することができます。
このUser.list()で取得したユーザーIDは、プッシュ通知の際の絞り込みに使用することができます。


# プッシュ通知を送信してみる

Monacaバックエンドで提供しているプッシュ通知は、通常MonacaクラウドIDE上から行う必要があります。

Monacaバックエンド マネジメントAPIで提供されている [プッシュ通知機能](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/push/) を利用することで、開発者側で管理されている外部サーバーからプッシュ通知を行うことができるようになります。

Monacaバックエンド マネジメントAPIで提供されているプッシュ通知機能では、`デバイスID` やMonacaバックエンドで管理されている `ユーザーID` を使用して、プッシュ通知対象を絞り込むことができます。

Monacaバックエンド マネジメントAPIでプッシュ通知を送信する場合は、[Push.send()](http://docs.monaca.io/ja/reference/monaca_api/cloud_management/push/#push-send) を使用します。

`プロジェクトID` は、対処プロジェクトのMonacaバックエンドに設定されている値に変更してください。
プロジェクトIDは、 Backend Settings画面のプッシュ通知画面に記載されています。

```sh:プッシュ通知例（Monacaバックエンドに登録されている全端末が対象）
curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "android", "target": "app", "buildType": "debug", "title": "Test", "message": "manage sample" , "extra_json": {"msg": "ok" }}}'

curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "ios", "target": "app", "buildType": "debug", "title": "", "message": "manage sample", "badge": 1 , "extra_json": {"msg": "ok"}}}'
```

```sh:deviceIdListを使用して絞り込むプッシュ通知例
curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "android", "target": "app", "buildType": "debug", "title": "Test", "message": "manage sample" , "extra_json": {"msg": "ok" }, "deviceIdList": [ "デバイスID" ]}}'

curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "ios", "target": "app", "buildType": "debug", "title": "", "message": "manage sample", "badge": 1 , "extra_json": {"msg": "ok"}, "deviceIdList": [ "デバイスID" ]}}'
```

deviceIdListの値は、配列の文字列で指定する必要があります。

```sh:userOidListを使用して絞り込むプッシュ通知例
curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "android", "target": "app", "buildType": "debug", "title": "Test", "message": "manage sample" , "extra_json": {"msg": "ok" }, "userOidList": [ "ユーザーID" ]}}' 

curl https://cloud.monaca.mobi/manage/json-rpc/エンドポイントID --header 'X-Monaca-Backend-Management-API-Key: マネジメントAPIキー' --data '{"jsonrpc": "2.0", "id": 1, "method": "Push.send", "params": {"pushProjectId": "プロジェクトID", "platform": "ios", "target": "app", "buildType": "debug", "title": "", "message": "manage sample", "badge": 1 , "extra_json": {"msg": "ok"}, "userOidList": [ "ユーザーID" ]}}'
```

userOidListの値は、配列の文字列で指定する必要があります。


このようにMonacaバックエンド マネジメントAPIを利用することで、MonacaクラウドIDEからのプッシュ通知ではできないプッシュ通知対象の絞り込みを行うことができます。

アプリから外部サーバーへデバイスIDやユーザーIDを登録することで、外部サーバーからの管理が可能になります。

プッシュ通知対象の絞り込みが必要な場合は、Monacaバックエンド マネジメントAPIをお試しください。


# おわりに
Monacaバックエンド マネジメントAPIでは、他にもたくさんの機能が提供されています。

プッシュ通知を送信した際に取得できる `プッシュキューID` を使用して、プッシュ通知のステータス情報を取得することもできます。

外部サーバーからMonacaバックエンドを管理する必要がある場合は、一度、Monacaバックエンド マネジメントAPIをお試しください。