目次
- はじめに
- 実装方法
- まとめ
はじめに
本記事では、Konyのアプリでローカル通知を使用する方法についてご紹介いたします。
Konyでは通知を設定するために"kony.localnotifications”というAPIが用意されているので、今回はそちらを使って実装していきたいと思います。
完成イメージは以下です。
ローカル通知とは ?
ローカル通知とは一般的なプッシュ通知(リモート通知)と異なり、外部サーバを介する必要がなく、デバイスの内部で完結するプッシュ通知です。 アプリ内にあらかじめ定義されたルールに従い通知がスケジュールされ、そのタイミングになったところでリモート通知と同じように通知が表示されます。
参考:https://repro.io/contents/local-push-notification/
実装方法
モジュールの作成
まず、通知の制御をするためのコードを記述するjsファイルを作成していきます。
Moduleを右クリックして、「New JS Module」を選択します。
作成したjsファイルの名前をcreateLocalnotification.js に変更します。こちらは任意で設定してください。
通知の設定 [説明]
コードを書いていく前にローカル通知に必要な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に設定するパラメータを定義していきます。
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 をセットしておきます。
サウンドはデフォルトの音を使うように指定しました。(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つのアクションを作成します。
作成したコードは以下です。
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つのカテゴリーとしてまとめていきます。
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 とする。 |
####カテゴリーの登録 [実装]
それでは実際にカテゴリーを登録していきます。
var categoryArr = [categoryObj];
var registerCategory = kony.notificationsettings.registerCategory({
"categories": categoryArr,
"pspConfig": {
"types": [0, 1, 2]
}
});
categoryArr
には、カテゴリーの設定[実装]で作成したcategoryObj
を格納しています。
そして、そのcategoryArr
をregisterCategory
に登録して、バッジ・音・アラートの3つで通知が来るように設定しました。
※ Androidの場合は、以下の設定が必要です。
Project Setting > Native > Android > Enable Local Notifications をON
ライフサイクルイベントにセットする[説明]
ライフサイクルとは、アプリが起動してデバイスのメモリに入り、終了してメモリから解放されるまでの一連の活動のことです。アプリのライフサイクルには、初期化前、初期化後、App Service、Deeplink、On View State Change、On Searchなどの特定のフェーズがあります。
通知からのアクションは、アプリがロードされてデータが表示される前(Pre Appinit)のフェーズで設定する必要があります。
ライフサイクルイベントにセットする[実装]
-
プロジェクトから、設定したい端末(今回はMobile)を選択
-
画面右からPre Appinitを選択
-
Invoke Functionを選択して、作成したcreateLocalnotificationを設定
####完成
ビルドすると以下を確認することができます。
iOS | Android |
---|---|
|
作成したソースの全体
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でローカル通知を使用する方法についてご紹介いたしました。是非試してみてください!
参考