最近のアクセス:
Notification Provider API

この API は GeneXus の組み込みモジュールの一部であり、GeneXus の開発者が外部通知プロバイダーを介してプッシュ通知を送信するための一連の機能を提供します。これは、登録されたデバイスの管理と、単一のデバイスまたはグループのための送信メカニズムを可能にします。
イメージ:36353.png

適用範囲

オブジェクト Procedure オブジェクトWeb Panel オブジェクトWork With for Web
プラットフォーム  Web (.NET、Java)
 

使用可能バージョン

この 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

: [ Default Log Level ] プロパティの値が [ Debug ] の場合、msg 関数の status フラグにより、開発者はメッセージを記述してからそれをアプリケーションログで調査できます。
警告: メインアプリケーションで定義されたイベント (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
イメージ:33695.png イメージ:33696.png
エンドユーザーがそれをタップすると、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)
 

  • iOS プラットフォームは常に [ Apple Application Icon ] プロパティ内のイメージセットを通知アイコンとして使用します。Android は [ Android Notification Icon ] プロパティ内のイメージセットを使用し、Notification SDT の Appearance.Icon フィールドにより、通知メッセージ用に異なるイメージを使用できます。
  • iOS では、アプリケーションがバックグラウンドモードのときに (通知に添付された動画などの) コンテンツをダウンロードしたい場合、[ Background Modes ] プロパティに [ remote-notification ] の値を含める必要があります。
  • GeneXus 15 Upgrade 10 以降では、開発者がいずれかの Send メソッドを OneSignal プロバイダーで使用する場合、Messages パラメーターは JSON 文字列の応答ペイロードを説明フィールドに格納して、1 つのアイテムを返します。このような JSON には、通知 ID と受信者数が含まれています。
    例:
    {"id":"5263x49t-ss31-436r-942k-638h111d9g2a","recipients":1}

トラブルシューティング

  • 開発者がプロバイダーのコンソール (OneSignal など) からデバイスを削除すると、デバイスは引き続きプロバイダーが提供する識別子に関連付けられたままになります。このような場合は、デバイスからアプリケーションをアンインストールし、再インストールして、プロバイダープラットフォームで新しい識別子を生成してください。
  • GeneXus 15 Upgrade 4 では、Target SDT に 2 つを超えるフィルタターゲットを使用する際に発生していた問題が修正されています。
    詳細については、SAC #40224 を参照してください。

エラー「Push Provider was not specified. Please set a Push Provider」

通知を送信する際に、次のエラーが発生します。
Unknown error processing: Push Provider was not specified. Please set a Push Provider
webapp フォルダに有効な通知設定を含む CloudServices.config ファイル (具体的には \WEB-INF\CloudServices.config) が含まれていることを確認してください。バッチで実行する場合は、プロセス実行と同じフォルダにファイルを配置する必要があります。

よくある質問

  • One signal を使用するプロジェクトをビルドすると、GeneXus で次のエラーが表示されます。
    ld: framework not found Pods_OneSignalNotificationServiceExtension
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    原因: GeneXus 15 Upgrade 6 以降で生成される iOS プロジェクトは、拡張ライブラリをベースにしています。
    解決方法: Mac コンピューター上で *.xcworkspace ファイル (*.xcodeproj ファイルではない) を開きます。

ドメイン

NotificationBadgeType (2)

Notification SDT の Appearance.Badge フィールドの動作を指定します。
        説明
  None アプリケーションアイコン上のバッジカウントは変更されません。
  SetTo アプリケーションアイコン上のバッジカウントを、"Badge" フィールドで指定された数値に設定します。
  Increase  "Badge" フィールドの数値を、アプリケーションアイコン上のバッジカウントに追加します (マイナスの数値の場合はカウントが減ります)。

FilterRelationType

キーと値の間の関係演算子を利用可能にします。
        説明
  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

ConfigurationProperty(1)

フィールド ドメイン 説明
PropertyName  Character(100)  プロパティ名です。
例:
[ OneSignal - App ID ] プロパティは "APP_ID"
[ OneSignal - REST API Key ] プロパティは "REST_API_KEY"
PropertyValue <コレクション> プロパティ名と関連付けられたプロパティ値です。

Delivery

フィールド ドメイン 説明
Priority PushNotificationPriority  (Android のみ)
通知の優先度を示します。
既定値: High
Expiration Numeric(18.0) 通知プロバイダーがメッセージを送信しようとする時間 (秒)。
既定値: 0 (指定なし)

Event

フィールド ドメイン 説明
Name Character(100) 通知を受信するスマートデバイスのメインオブジェクトで定義されているイベントの名前です。
Parameter <コレクション> (オプション) 通知とともに送信されるパラメーターのセットです。
  Name  Character(100)  通知のパラメーターとして使用されるスマートデバイスのメインオブジェクト内の変数の名前です。
  Value Character(100) クライアント側のイベントに送信されるパラメーターの値です。

LocalizedText

フィールド ドメイン 説明
DefaultText Character(100) ローカライズされたアイテムがある場合に使用されるテキストです。
Text <コレクション> (オプション) 言語別のテキストセット (ローカライズ版) です。
  Language  Character(100)  テキストを記述した言語名です。(サポートされる言語名: Spanish、English、Portuguese、Chinese、Japanese)
  Text     Character(100) 上記で定義された言語で記述されたテキストです。

Notification

フィールド ドメイン 説明
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

Target

フィールド ドメイン 説明
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
 

プロシージャー

AddDeviceGroups

デバイスが属するグループまたはカテゴリのセットを関連付けます。
     パラメーター 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 通知プロバイダーにのみ有効です。



サブページ
Created: 18/10/29 01:05 by Admin Last update: 21/05/20 01:25 by Admin
カテゴリ
Powered by GXwiki 3.0