この API は GeneXus の組み込みモジュールの一部であり、GeneXus の開発者が外部通知プロバイダーを介してプッシュ通知を送信するための一連の機能を提供します。これは、登録されたデバイスの管理と、単一のデバイスまたはグループのための送信メカニズムを可能にします。
この API は GeneXus 15 Upgrade 3 以降で利用できます。
(1) GeneXus 15 Upgrade 9 以降で利用できます。
(2) GeneXus 15 Upgrade 11 以降で利用できます。
(3) GeneXus 16 Upgrade 10 以降で利用できます。
スマートデバイスアプリケーションのメインオブジェクトは "MySDApp"と呼ばれ、以下のイベントが定義されているとします。
Event 'NotificationAction'
msg(&msg,status)
EndEvent
警告: メインアプリケーションで定義されたイベント (NotificationAction など) には、UI を含むコマンド、関数、またはコントロール (msg、confirm など) を追加できません。このような通知は、デバイスがロックされている場合、アプリケーションが バックグラウンドモードで実行されている場合、およびアプリケーションが 実行されていない場合でも到達できます。しかし、アプリケーションが フォアグラウンドモードで実行されている場合は、開発者が UI アクションをトリガーできます。その場合、開発者はまず [ Interop.ApplicationState ] プロパティを使用して状態を確認する必要があります。
次に、Web バックエンドから、次のようにソースコードを記述できます。
変数:
&TheNotification : Notification、GeneXus.Common.Notifications
&TheNotificationDelivery: Delivery、GeneXus.Common.Notifications
&TheNotificationConfiguration: Configuration、GeneXus.Common.Notifications
ソース:
&TheNotification.Title.DefaultText = "GeneXus"
&TheNotification.Text.DefaultText = "Notification Provider API"
&TheNotification.Actions.DefaultAction.Event.Name = "NotificationAction" // SD Main オブジェクトで指定されています
&TheNotification.Actions.DefaultAction.Event.Parameters.FromJson(' [ {"Name":"msg","Value":"Hello dear user!"} ] ')
&TheNotification.Appearance.Icon.Small = !"GX15IconKB"
&TheNotificationDelivery.Expiration = 3000
&TheNotificationDelivery.Priority = PushNotificationPriority.Normal
&TheNotificationConfiguration.ApplicationId = !"MySDApp"
GeneXus.Common.Notifications.SendNotification(
&TheNotificationConfiguration,
DeviceToken, //ターゲットデバイスのトークン
&TheNotification,
&TheNotificationDelivery,
&OutMessages,
&IsSuccessful
)
次に、前述のコードが実行されると、デバイスは次のような通知を受信します:
Android |
iOS |
|
|
エンドユーザーがそれをタップすると、msg コマンドはコンソールに "Hello dear user!"というメッセージを表示します。
特定のタグが既に定義されているデバイスに事前通知を送信する場合は、SendNotificationTargets プロシージャーを使用し、Target パラメーターを指定します。
学生ユーザーに対応するデバイスを対象として、AddDeviceTargetFilter プロシージャー全体で値「Student」のタグ「User Type」を追加したものとします。
ここで、これらのデバイスに通知を送信するには、次のコードを使用します。
&TargetFilter = new()
&TargetFilter.Name = !'User Type'
&TargetFilter.Value = !'Student'
&Target.TargetType = TargetType.Targets
&Target.Targets.Add(&TargetFilter)
SendNotificationTargets(&NotificationConfiguration, &Target, &Notification, &NotificationDelivery, &Messages, &Success)
- 開発者がプロバイダーのコンソール (OneSignal など) からデバイスを削除すると、デバイスは引き続きプロバイダーが提供する識別子に関連付けられたままになります。このような場合は、デバイスからアプリケーションをアンインストールし、再インストールして、プロバイダープラットフォームで新しい識別子を生成してください。
- GeneXus 15 Upgrade 4 では、Target SDT に 2 つを超えるフィルタターゲットを使用する際に発生していた問題が修正されています。
詳細については、SAC #40224 を参照してください。
通知を送信する際に、次のエラーが発生します。
Unknown error processing: Push Provider was not specified. Please set a Push Provider
webapp フォルダに有効な通知設定を含む CloudServices.config ファイル (具体的には \WEB-INF\CloudServices.config) が含まれていることを確認してください。バッチで実行する場合は、プロセス実行と同じフォルダにファイルを配置する必要があります。
Notification SDT の Appearance.Badge フィールドの動作を指定します。
|
値 |
説明 |
|
None |
アプリケーションアイコン上のバッジカウントは変更されません。 |
|
SetTo |
アプリケーションアイコン上のバッジカウントを、"Badge" フィールドで指定された数値に設定します。 |
|
Increase |
"Badge" フィールドの数値を、アプリケーションアイコン上のバッジカウントに追加します (マイナスの数値の場合はカウントが減ります)。 |
キーと値の間の関係演算子を利用可能にします。
|
値 |
説明 |
|
Exists |
定義されたキーが存在する場合は True です。 |
|
NotExists |
定義されたキーが存在しない場合は True です。 |
|
Equal |
キーと値が等しい場合は True です。 |
|
NotEqual |
キーと値が等しくない場合は True です。 |
|
Greater |
キーが値より大きい場合は True です。 |
|
Less |
キーが値より小さい場合は True です。 |
FilterOperation
バイナリ論理演算を可能にします。
|
値 |
説明 |
|
OR |
少なくとも 1 つの条件を満たす必要があります。 |
|
AND |
両方の条件を満たす必要があります。 |
TargetType
通知を送信する代替ターゲットを定義します。
|
値 |
説明 |
|
Everybody |
登録されたすべてのデバイスが通知を受信します。 |
|
Devices |
登録されたデバイスのサブセットが通知を受信します。 |
|
Groups |
指定されたグループに属する登録デバイスが通知を受信します。 |
|
ターゲット |
対象条件を満たす、登録されたデバイスが通知を受信します。 |
PushNotificationPriority
通知の優先度です。
|
値 |
説明 |
|
Normal |
デバイスが Doze モード (省電力モード) になっている場合、デバイスを起動しません。 |
|
High |
デバイスが Doze モード (省電力モード) になっている場合、デバイスを起動します。 |
フィールド |
ドメイン |
説明 |
ApplicationId |
Character(100) |
(オプション) スマートデバイスのメインオブジェクト名 |
Properties (1) |
<コレクション> |
|
|
Item |
ConfigurationProperty |
[ Notifications Provider ] プロパティのコンテキストプロパティを動的に設定します。 |
Debug |
|
|
|
Debug |
Boolean |
プロキシサーバー経由でメッセージを検査するためのデバッグモードを有効にします。
既定値: False |
|
Proxy |
Substructure |
|
|
|
Host |
Character(20) |
サーバー名またはプロキシの IP アドレスです。 |
|
|
Port |
Numeric(6.0) |
サーバーのポート番号です。 |
Advanced |
Substructure |
|
|
BackCompatibility |
Boolean |
Android/iOS の古いバージョンの互換モードを有効にします。
既定値: False |
フィールド |
ドメイン |
説明 |
Priority |
PushNotificationPriority |
(Android のみ)
通知の優先度を示します。
既定値: High |
Expiration |
Numeric(18.0) |
通知プロバイダーがメッセージを送信しようとする時間 (秒)。
既定値: 0 (指定なし) |
フィールド |
ドメイン |
説明 |
Name |
Character(100) |
通知を受信するスマートデバイスのメインオブジェクトで定義されているイベントの名前です。 |
Parameter |
<コレクション> |
(オプション) 通知とともに送信されるパラメーターのセットです。 |
|
Name |
Character(100) |
通知のパラメーターとして使用されるスマートデバイスのメインオブジェクト内の変数の名前です。 |
|
Value |
Character(100) |
クライアント側のイベントに送信されるパラメーターの値です。 |
フィールド |
ドメイン |
説明 |
DefaultText |
Character(100) |
ローカライズされたアイテムがある場合に使用されるテキストです。 |
Text |
<コレクション> |
(オプション) 言語別のテキストセット (ローカライズ版) です。 |
|
Language |
Character(100) |
テキストを記述した言語名です。(サポートされる言語名: Spanish、English、Portuguese、Chinese、Japanese) |
|
Text |
Character(100) |
上記で定義された言語で記述されたテキストです。 |
フィールド |
ドメイン |
説明 |
Id |
Character(20) |
(オプション) 送信された通知に ID を割り当て、同じ ID で再度送信することによって、必要に応じて書き換えを許可します。 |
Title |
LocalizedText |
通知のタイトルコンテンツです。 |
Text |
LocalizedText |
通知のテキストコンテンツ (タイトルの下) です。 |
Appearance |
Substructure |
(オプション) UI をカスタマイズします。 |
|
Badge |
Character(4) |
(iOS のみ)
アプリケーションアイコンにバッジとして設定する数字です。 |
|
BadgeType (2) |
NotificationBadgeType |
"Badge" フィールドの動作です。「None」、「Set to」、または「Increase」(マイナスの値の場合はバッジ数が減ります) に設定します。 |
|
Icon |
|
|
|
|
Large |
Url |
(Android のみ)
使用するイメージリソースの URL です。 |
|
|
Small |
Character(100) |
(Android のみ)
通知に使用する小さなアイコン用の、ナレッジベースに埋め込まれた Image オブジェクトの名前です。
これにはいくつか制約があります。「スマート デバイス アプリケーションの画像」の「通知アイコン」セクションを参照してください。
Roman Nurik による Android Asset Studio ツールが役に立つ場合があります。 |
|
Sound |
Substructure |
|
|
|
Sound |
Boolean |
通知がエンドユーザーに届いたときにサウンドを有効にします。
既定値: True |
|
|
CustomSound |
Character(100) |
プロジェクトに埋め込まれたカスタムサウンドの名前です。
このオプションは上級者向けです。空の場合は、既定のプラットフォームのサウンドが使用されます。 |
|
Channel |
Character(100) |
通知を送信するための Android Oreo の通知カテゴリです。 |
|
Picture |
Character(100) |
(Android のみ)
拡大表示で表示する画像です。描画可能なリソース名または URL を指定します。 |
Actions |
Substructure |
|
|
DefaultAction |
Substructure |
通知のタップで実行される既定のアクションです。 |
|
|
Event |
Event |
エンドユーザーが通知をタップしたときに実行される既定のアクションを設定します。 |
|
CustomUIActions |
<コレクション> |
通常、ユーザーが通知を受信すると、通知をタップするだけで 1 つのアクションしか利用できません。CustomUIActions では、通知内で複数のアクションを取ることができるため、通知内のインタラクティブ性を高めることができます。ここで例を参照してください。 |
|
|
Event |
Event |
セカンダリーアクションを設定します。 |
|
|
Id |
Character(20) |
カスタムのセカンダリーアクションの ID です。 |
|
|
Text |
LocalizedText |
オプションで表示されるテキストです。 |
|
|
Icon |
Character(100) |
ナレッジベース内の Image オブジェクトの名前です。 |
Advanced |
Substructure |
|
|
Attachment |
<コレクション> |
(iOS のみ、オプション) リッチコンテンツ (MP4 形式の動画などのメディア) のセットです。パブリック URL リソースである必要があります。 |
|
|
Type |
Character(100) |
リソースの識別子です (例: myvideo.mp4)。 |
|
|
URL |
Url |
メディアリソースへのリンクです。 |
|
Group |
Substructure |
(Android のみ、オプション)プッシュ通知のスタック用です。 |
|
|
GroupId |
Character(100) |
同じ受信トレイに通知をスタックするための識別子です。 |
|
|
GroupMessage |
LocalizedText |
同じグループ内の複数のメッセージがスマートデバイスに届いたときに表示されるテキストです。 |
|
Template |
Character(100) |
One Signal ダッシュボードで設定したテンプレートを使用します。リクエストとともにパラメーターを送信することで、テンプレートの値を上書きできます。
このオプションは通知メッセージのさまざまな側面 (アイコン、音、色、優先度、カテゴリなど) を、ダッシュボードから直接カスタマイズする際に役立ちます。
テンプレートは、One Signal ダッシュボードのテンプレートを表示した際の URL の UUID です。例: be4a8044-bbd6-11e4-a581-000c2940e62c |
フィールド |
ドメイン |
説明 |
TargetType |
TargetType |
次のコレクションのどれを使用するかを決定するターゲットデバイスがどれかを示します。 |
Device |
<コレクション> |
(オプション) [ TargetType ] が Devices の場合に適用されます。 |
|
DeviceToken |
Character(500) |
セット内のターゲットデバイスの DeviceToken です。 |
Group |
<コレクション> |
オプション: [ TargetType ] が Groups で、コレクションがグループの論理和 (OR で結合されている) として理解されている場合に適用されます。 |
|
Name |
Character(100) |
AddDeviceGroup プロシージャーで以前に追加されたグループの名前です。 |
Filter |
<コレクション> |
|
|
Name |
Character(100) |
AddDeviceGroup プロシージャーで以前に追加されたグループの名前です。 |
|
Value |
Character(100) |
フィルタキーに関連付けられた値です。 |
|
Relation |
FilterRelationType |
Name または Name と Value フィールドに関連付けられた関係です。
既定値: Exists |
|
Operator |
FilterOperation |
現在の項目条件と次の項目条件の関係です (最後の項目はこの項目を無視します)。
既定値: AND |
デバイスが属するグループまたはカテゴリのセットを関連付けます。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、Groups:Collection(Character(20)) |
|
戻り値 |
Messages:SDT(Messages)、Success:Boolean |
RemoveDeviceGroups
デバイスが属するグループまたはカテゴリのセットから関連付けを解除します。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、Groups:Collection(Character(20)) |
|
戻り値 |
Messages:SDT(Messages)、Success:Boolean |
AddDeviceTargetFilter
フィルタ名/値をデバイスに関連付けます。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、FilterName:Character(20)、FilterValue:Character(20) |
|
戻り値 |
Messages:SDT(Messages)、Success:Boolean |
RemoveDeviceTagetFilter
デバイスからフィルタ名/値の関連付けを解除します。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、FilterName:Character(20)、 FilterValue:Character(20) |
|
戻り値 |
Messages:SDT(Messages)、Success:Boolean |
SendEvent
配信の設定で特定のデバイス上でイベントを実行します。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500), NotificationEvent:Event、Delivery:Delivery |
|
戻り値 |
Messages:SDT(Messages)、 Success:Boolean |
SendEventTargets
配信の設定でターゲットデバイスのセット上でイベントを実行します。
|
パラメーター |
Configuration:SDT(Configuration)、Target:Target、Event:Event、Delivery:Delivery |
|
戻り値 |
Messages:SDT(Messages)、 Success:Boolean |
SendNotification
配信設定の特定のデバイスにプッシュ通知を送信します。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、NotificationMessage:Notification、Delivery:Delivery |
|
戻り値 |
Messages:SDT(Messages)、 Success:Boolean |
SendNotificationTargets
配信設定のターゲットデバイスのセットにプッシュ通知を送信します。
|
パラメーター |
Configuration:SDT(Configuration)、Target:Target、NotificationMessage:Notification、Delivery:Delivery |
|
戻り値 |
Messages:SDT(Messages)、 Success:Boolean |
SetDeviceTargetMultipleFilters (3)
フィルタのリスト (名前/値のコレクション) をデバイスに関連付けます。
|
パラメーター |
Configuration:SDT(Configuration)、DeviceToken:Character(500)、FilterTags:Properties |
|
戻り値 |
Messages:SDT(Messages)、 Success:Boolean |
このメソッドは、OneSignal 通知プロバイダーにのみ有効です。
|