Konyを使ってAndroidのPush通知を設定する方法

# 目次
1. はじめに
2. 実装方法
3. 最後に

# はじめに
以前こちらの記事でVisualizerを使ってiOS端末にPush通知を送信する方法について記載しました。
[EngagementServiceを使いiOSデバイスでPush通知を送信 Part1](https://qiita.com/Kony_Team/items/2e5cafb73481bf4179e0)

今回はAndroidでのPush送信の設定方法について紹介していきたいと思います！

# 実装方法
## 1.Firebaseでプロジェクトを作成
https://firebase.google.com/
Firebaseのページにアクセスして、Google Accountなどを利用してログインをしてください。
（Google Accountがない方は作成してください。）

ログインしたら右上の「コンソールへ移動」をクリックします。

コンソールが開いたら、「プロジェクトを追加」をクリックして、プロジェクトを作成しましょう。
![スクリーンショット 2021-03-18 23.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/fa89c7c0-5f87-4a7c-d9fa-19380d017ce1.png)

作成画面が表示されるので、案内に沿って作成していきます。

作成が完了したらプロジェクトの画面に移動します。
これでFirebaseプロジェクトの作成は完了です！

## 2.Firebaseで設定ファイルのダウンロード

プロジェクトが作成できたら、Androidのマークをクリックしてアプリを追加します。
![スクリーンショット 2021-03-18 23.17.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a80ae3ad-fd8d-3814-5df0-731a9aebc050.png)

以下のような画面が表示されるので、案内に従ってアプリ名の設定を行い、
`google-services.json`をダウンロードして、設定を完了してください。
このファイルは、後ほどVisualizerに設定します。

![スクリーンショット 2021-03-19 0.03.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9ee13149-1d7a-d73b-8484-146c06c35a08.png)

## 3.senderID、サーバーキーの取得
次に、Pushを送信するために必要なsenderID、サーバーキーを取得します。

Firebaseのプロジェクトの概要の**歯車マーク**=>**プロジェクトを設定**をクリックします。
![スクリーンショット 2021-03-18 23.22.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a56adb6c-2766-4a33-6935-894b20ebdeb0.png)

**CloudMessaging**タブをクリックします。
以下のページで、サーバキーとsenderID、トークンの情報を取得することができます。
![スクリーンショット 2021-03-18 23.21.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/2e46c0c6-ffbd-d090-7cdb-bab1f5b6a953.png)

送信者ID（senderID）は、デバイスからFCMに登録する際に設定し、サーバーキーはEngagementServerに設定します。

## 4.EngagementServiceにサーバーキーを設定
Fabricを開き、EngagementタブでAndroidを開きます。
それぞれ以下のように設定してください。

| 項目 | 設定値 |
|:-|:-|
|Select Network   |  Firebase Cloud Messaging（FCM） |
|FCM Authorization Key  |  Firebaseで取得したサーバーキー |


![スクリーンショット 2021-03-18 23.29.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/7e9a8a9a-bcd2-85f1-7c42-4493f5459b52.png)

設定したら、**SAVE**をクリックして保存をします。
Publishタブに移動し公開したい環境を選択してPublishを行ってください。
この時、**Exclusions in Publish**で**Engagement Services Configuration**にチェックが入っていないことを確認して下さい。
（※チェックが入っている場合は、PublishにEngagementServiceの設定が含まれません。）

![スクリーンショット 2021-03-18 23.34.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/b1766eab-c55c-1912-1ab7-5c3a5dd343c4.png)

これでEngagementServiceにサーバーキーを設定することができました。
反映されているか確認するには、Fabricの左メニュー**Environment**をクリックして、
Publishした環境の**EngagementService**を選択し、**Apps**メニューを選択します。
![スクリーンショット 2021-03-18 23.41.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/90d99f3b-563f-a87d-a1af-381a6e774958.png)

先ほどPublishしたアプリのPlatformの箇所にAndroidのマークがついていればOKです。

![スクリーンショット 2021-03-18 23.40.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/870cb603-41ea-26df-1afc-0a1e6ae63d5b.png)

Androidのマークがない場合はPublishが失敗していないかなど確認してみてくださいね:ok_woman_tone1:

## 5.VisulizerでsenderIDを設定
次にVisualizerでsenderIDを設定します。
[EngagementServiceを使いiOSデバイスでPush通知を送信]( Part1[https://qiita.com/Kony_Team/items/2e5cafb73481bf4179e0#kony-visualiser%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0
)
こちらで紹介しているように、**kony.push.register(config)**を使うことによって、
デバイスをEngagementServiceに登録するための処理となります。

Androidの場合は、configにsenderIDを設定する必要があるため、
以下のようにsenderIDを設定しましょう。

```pushNotificationManager.js
pushNotificationManager.pushRegister = function() {
  kony.print("***** START PUSH REGISTER");
  let config;
  //#ifdef iphone
  // Apple Notification Server
  config = [0, 1, 2];
  //#endif
  //#ifdef android
  config = {
    senderid: "Firebaseで取得したsenderID"
  };
  //#endif

  kony.push.register(config); 
};
```

その他のコードについては、上述したリンクをご参照ください:raised_hands_tone1:

## 6.設定ファイルのインポートとProjectSettingの設定

[2](##2)でダウンロードしたファイルをResourceフォルダに設置します。
VisualizerのAssetタブを開き、androidの下に新しく`fcm`フォルダを作成します。
作成できたら、2でダウンロードしたファイルをインポートしてください。

ファイルパス：`ProjectLocation\resources\mobile\native\android\fcm`  
インポート例：  
![スクリーンショット 2021-03-19 0.08.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9d129157-6191-b715-60ea-acec28adce47.png)

最後に、VisualizerでProjectSettingを開き、
**Native**=>**Android**を選択します。
![スクリーンショット 2021-03-18 23.51.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/6945aa77-179c-2eac-4f74-706d808fd6f1.png)

以下の項目をそれぞれこのように設定します。

| 項目 | 設定する内容 | 
|:-:|:-:|
| Package Name | Firebaseで設定したパッケージ名  |   
| Push Notification  |  FCM |   

Package Nameは、Firebaseでプロジェクトを開き、
**歯車マーク**=>**プロジェクトの概要**=>**全般**を選択し、下までスクロールするとパッケージ名の箇所に記載があります。
<font color="IndianRed">**この名前と上記のPackage Nameが一致していないと、Push送信できないため、注意してください。**</font>

![スクリーンショット 2021-03-18 23.55.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/6b79384a-3ff3-02c6-923d-75febba62dbe.png)


設定は以上となります！

これでAndroid端末にPush通知を送信するための設定が完了したので、
VisualizerでアプリをBuildしてPush通知が受信できるか確認してみてくださいね:relaxed:

# まとめ
ProjectSettingでのパッケージ名をFirebaseのパッケージ名と合わせる点など、
つまづいたポイントだったので、困っている方がいたら参考にしてみてください:eyes:

# 参考
https://basecamp.temenos.com/s/article-detail/a046A00000ATmiBQAT/google-fcm-push-notifications
https://docs.kony.com/konylibrary/visualizer/visualizer_user_guide/Content/Custom_FCM.htm