0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kony でローカル通知を使用する方法

Last updated at Posted at 2021-06-28

目次

  1. はじめに
  2. 実装方法
  3. まとめ

はじめに

本記事では、Konyのアプリでローカル通知を使用する方法についてご紹介いたします。
Konyでは通知を設定するために"kony.localnotifications”というAPIが用意されているので、今回はそちらを使って実装していきたいと思います。
完成イメージは以下です。

####完成イメージ
タイトルなし.gif

ローカル通知とは :astonished:?

ローカル通知とは一般的なプッシュ通知(リモート通知)と異なり、外部サーバを介する必要がなく、デバイスの内部で完結するプッシュ通知です。 アプリ内にあらかじめ定義されたルールに従い通知がスケジュールされ、そのタイミングになったところでリモート通知と同じように通知が表示されます。
参考:https://repro.io/contents/local-push-notification/

実装方法

モジュールの作成

まず、通知の制御をするためのコードを記述するjsファイルを作成していきます。
Moduleを右クリックして、「New JS Module」を選択します。
image004.png

作成したjsファイルの名前をcreateLocalnotification.js に変更します。こちらは任意で設定してください。
image006.png

通知の設定 [説明]

コードを書いていく前にローカル通知に必要なkony.localnotifications.createについて説明します。


kony.localnotifications.create(
    notificationId,
    datetime,
    message,
    title,
    categoryId,
    pspConfig)
パラメータ 説明
notificationId どの通知かを判断するために指定するID
datetime 通知のトリガーになる日付と時間
message 通知のメッセージ内容
title 通知のタイトル
categoryId 通知のカテゴリーID
pspConfig キーと値のペアで指定する、iOSプラットフォーム固有のオプション設定
pspConfigには、以下の種類のキーがあります。
● badge: アプリアイコンに通知数を表示するためのキー
● sound: 再生するサウンドを指定するオプションのキー

※pspConfigはiOSのみのオプションです。

通知の設定 [実装]

それでは実際に、kony.localnotifications.createに設定するパラメータを定義していきます。

createLocalnotification.js
function createLocalnotification() {
  var notificationId = "01";
  //#ifdef iphone
  var date = "19 Feb 2021 16:05:00 GMT+9";
  //#endif
  //#ifdef android
  // androidの場合は UTC で指定
  var date = "19 Feb 2021 15:05:00 +0700";
  //#endif
  var format = "dd MMM yyyy HH:mm:ss Z";
  var message = "Local notification Received";
  var title = "Title";
  var categoryId = "calendar";
    kony.localnotifications.create({
    "id": notificationId,
    "dateTime": {
      "date": date,
      "format": format
    },
    "message": message,
    "title": title,
    "categoryId": categoryId,
    "pspConfig": {
      "badge": 1,
      "sound": kony.localnotifications.DEFAULT_SOUND
    }

  });

}

id, dataTime, message, title, categoryId, pspConfig を定義して、それぞれにセットしています。

以下で、dataTime と pspConfig について詳しく説明していきます。

dateTimeには、日付と時間・そのフォーマットを指定します。
"format"に従った"date"を定義します。
例:ここでは日本のタイムゾーン(GMT+9)を使用しています。場合に応じて変更してください。

※ androidの場合は UTC での指定が必要

var date = "19 Feb 2021 16:05:00 GMT+9";
var format = "dd MMM yyyy HH:mm:ss Z";

formatの解説 :

  • dd : 日付
  • MMM: 月を英語表記で指定
    (Jan,Feb,Mar,Apr,May,Jun,July,Agu,Sep,Oct,Nov,Dec)
  • yyyy : 年
  • HH : 時間
  • mm : 分
  • ss : 秒
  • Z : タイムゾーン

pspConfigには、アプリアイコンに通知数を表示するためのbadgeと、 再生するサウンドを指定するsoundを設定します。
今回は通知数をカウントするわけでは無いので、1 をセットしておきます。
スクリーンショット 2021-03-24 18.53.32.png
サウンドはデフォルトの音を使うように指定しました。(kony.localnotifications.DEFAULT_SOUND)

通知から実行するアクションの設定 [説明]

通知に設定するアクションについて解説していきます。
まずは、アクションの作成に必要なkony.notificationsettings.createActionについて説明します。kony.notificationsettings.createActionには以下のパラメータがあります。


kony.notificationsettings.createAction (
     actionId, 
     label, 
     pspConfig)
パラメータ 説明
actionId [String] アクションを識別するためのID
label [String] アクションを表すラベル
pspConfig [JSObject] キーと値のペアで指定するアクションの設定。詳細は以下で説明します。

pspConfigにも、いくつか要素があるので以下で説明します。

オプション 説明
activationMode [Number] 【必須】起動モードを指定することができます。
起動モードには、フォアグラウンドでアクションが発生するkony.notificationsettings.ACTIVATION_MODE_FORWARDSと、
バックグラウンドでアクションが発生するkony.notificationsettings.ACTIVATION_MODE_BACKWARDSの2種類があります。
※ activationModeプロパティは、iOSプラットフォームにのみ適用できます。
authenticationRequired [Boolean] 【必須】このパラメータは、activationModeをkony.notificationsettings.ACTIVATION_MODE_BACKWARDSと設定した場合にのみ適用されます。デバイスのロックを解除する必要があるかを設定します。
destructive [Boolean] 【必須】通知が消えるようにしたいのであれば、この値をtrueに設定します。それ以外の場合は、falseに設定します。
visibleOn [String] 【必須】通知をWatchやiPhoneに表示する設定ができます。どれに表示するかを以下のオプションで選択できます。
・kony.notificationsettings.WATCH_ONLY
・kony.notificationsettings.BOTH
・kony.notificationsettings.WATCH_ONLY

通知から実行するアクションの設定 [実装]

デモでは、「Accept」「Reject」「Decline」の3つのアクションを作成します。
作成したコードは以下です。
スクリーンショット 2021-03-24 18.58.36.png

createLocalnotification.js
 var accept = kony.notificationsettings.createAction({
    "id": "Accept",
    "label": "Accept",
    "pspConfig": {
      "authenticationRequired": true,
      "destructive": true,
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_FORWARDS,
     "visibleOn": kony.notificationsettings.BOTH
    }
  });

  var reject = kony.notificationsettings.createAction({
    "id": "Reject",
    "label": "Reject",
    "pspConfig": {
      "authenticationRequired": false,
      "destructive": false,
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_FORWARDS,
      "visibleOn": kony.notificationsettings.BOTH
    }
  });

  var decline = kony.notificationsettings.createAction({
    "id": "Decline",
    "label": "Decline",
    "pspConfig": {
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_BACKWARDS,
      "authenticationRequired": true,
      "destructive": false,
      "visibleOn": kony.notificationsettings.BOTH
    }
  });

アクションをまとめたカテゴリーの設定 [説明]

次に、作成したアクションを1つのカテゴリーとしてまとめる**kony.localnotifications.createCategory**について説明します。

kony.localnotifications.createCategory(
   categoryId,
   actions, 
   pspConfig:{
       minimalActions:[actions],
       presentationOptions
   }
);
パラメータ 説明
categoryId[String] 作成したカテゴリーを判別するためのID
actions[String] カテゴリーに紐づくアクションを指定します。アクションがない場合は、nullを渡します。

注意:iOSでは4つ以上のアクション、Androidでは3つ以上のアクションを追加することはできません。
pspConfig[JsObject] キーと値のペアで指定するカテゴリーの設定。詳細は以下です。

※pspConfigはiOSのみのオプションです。
カテゴリーのpspConfigにも、いくつか要素があるので説明していきます。

オプション 説明
minimumActions [array] 【必須】このパラメータは、iOSプラットフォームにのみ適用され、カテゴリの最小限のアクションを指定します。
presentoptions [array] このパラメーターを使用すると、通知の表示オプションを以下から選択できます。
UNNotificationPresentationOptionBadge – 0:通知バッジアイコンを追加します。
UNNotificationPresentationOptionSound – 1:サウンドを再生します。
UNNotificationPresentationOptionAlert – 2:通知バナーを表示します。
※このパラメータは、V8SP3以降で使用できます。

####アクションをまとめたカテゴリーの設定 [実装]
それでは先ほど作成した「Accept」「Reject」「Decline」のアクションを1つのカテゴリーとしてまとめていきます。

createLocalnotification.js

  var defaultActionContextArr = [accept, reject, decline];
  var minimalActionContextArr = [accept, reject];
  var categoryObj = kony.notificationsettings.createCategory({
    "categoryId": categoryId,
    "actions": defaultActionContextArr,
    "pspConfig": {
      "minimalActions": minimalActionContextArr
    }
  });

defaultActionContextArr には、「Accept」「Reject」「Decline」の3つを格納します。
最低限のアクションを定義するminimalActionContextArrには、「Accept」「Reject」を格納しました。

####カテゴリーの登録 [説明]

カテゴリーの作成が終わったら、通知にカテゴリーを登録する必要があります。登録にはkony.notificationsettings.registerCategoryを使用します。

kony.notificationsettings.registerCategory (
    categories,
    pspConfig)
パラメータ 説明
categories [array] 登録するカテゴリーを指定します。
pspConfig[JsObject] 通知のオプションを設定します。オプションは以下です。
types [String]【必須】
通知の種類を決めることができます。
0 - 通知タイプを Badge とする。
1 - 通知の種類を Sound とする。
2 - 通知の種類を Alert とする。

####カテゴリーの登録 [実装]
それでは実際にカテゴリーを登録していきます。

createLocalnotification.js

  var categoryArr = [categoryObj];

  var registerCategory = kony.notificationsettings.registerCategory({
    "categories": categoryArr,
    "pspConfig": {
      "types": [0, 1, 2]
    }
  });

categoryArrには、カテゴリーの設定[実装]で作成したcategoryObj を格納しています。

そして、そのcategoryArrregisterCategoryに登録して、バッジ・音・アラートの3つで通知が来るように設定しました。


※ Androidの場合は、以下の設定が必要です。
Project Setting > Native > Android > Enable Local Notifications をON

スクリーンショット 2021-06-17 19.53.15.png

ライフサイクルイベントにセットする[説明]

ライフサイクルとは、アプリが起動してデバイスのメモリに入り、終了してメモリから解放されるまでの一連の活動のことです。アプリのライフサイクルには、初期化前、初期化後、App Service、Deeplink、On View State Change、On Searchなどの特定のフェーズがあります。

通知からのアクションは、アプリがロードされてデータが表示される前(Pre Appinit)のフェーズで設定する必要があります。

ライフサイクルイベントにセットする[実装]

  1. プロジェクトから、設定したい端末(今回はMobile)を選択

  2. 画面右からPre Appinitを選択

  3. Invoke Functionを選択して、作成したcreateLocalnotificationを設定

image009.png
image011.png

####完成
ビルドすると以下を確認することができます。

iOS Android
image008.gif image011.gif

|

作成したソースの全体

createLocalnotification.js
function createLocalnotification() {
  var notificationId = "01";
  //#ifdef iphone
  var date = "19 Feb 2021 16:05:00 GMT+9";
  //#endif
  //#ifdef android
  // androidの場合は UTC で指定
  var date = "19 Feb 2021 15:05:00 +0700";
  //#endif
  var format = "dd MMM yyyy HH:mm:ss Z";
  var message = "Local notification Received";
  var title = "Title";
  var categoryId = "calendar";

  var accept = kony.notificationsettings.createAction({
    "id": "Accept",
    "label": "Accept",
    "pspConfig": {
      "authenticationRequired": true,
      "destructive": true,
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_FORWARDS,
      "visibleOn": kony.notificationsettings.BOTH
    }
  });

  var reject = kony.notificationsettings.createAction({
    "id": "Reject",
    "label": "Reject",
    "pspConfig": {
      "authenticationRequired": false,
      "destructive": false,
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_FORWARDS,
      "visibleOn": kony.notificationsettings.BOTH
    }
  });

  var decline = kony.notificationsettings.createAction({
    "id": "Decline",
    "label": "Decline",
    "pspConfig": {
      "activationMode": kony.notificationsettings.ACTIVATION_MODE_BACKWARDS,
      "authenticationRequired": true,
      "destructive": false,
      "visibleOn": kony.notificationsettings.BOTH
    }
  });

  var defaultActionContextArr = [accept, reject, decline];
  var minimalActionContextArr = [accept, reject];
  var categoryObj = kony.notificationsettings.createCategory({
    "categoryId": categoryId,
    "actions": defaultActionContextArr,
    "pspConfig": {
      "minimalActions": minimalActionContextArr
    }
  });

  var categoryArr = [categoryObj];
  var registerCategory = kony.notificationsettings.registerCategory({
    "categories": categoryArr,
    "pspConfig": {
      "types": [0, 1, 2]
    }
  });

  kony.localnotifications.create({
    "id": notificationId,
    "dateTime": {
      "date": date,
      "format": format
    },
    "message": message,
    "title": title,
    "categoryId": categoryId,
    "pspConfig": {
      "badge": 1,
      "sound": kony.localnotifications.DEFAULT_SOUND
    }
  });
}

まとめ

今回はKonyでローカル通知を使用する方法についてご紹介いたしました。是非試してみてください!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?