11.4. IM-Notice

11.4.1. 概要

IM-Noticeは、 intra-mart Accel Platform 上で動作しているさまざまなアプリケーションからの通知をデスクトップやスマートフォンに配信するための通知機能です。
Amazon Simple Notification Service(以下、Amazon SNS) や Google Cloud Messaging for Android(以下、GCMA)のサービスを使用し、スマートフォンアプリへ通知を配信することが可能です。

11.4.2. 通知機能全般

通知機能全般を使用するための設定を行います。

11.4.2.1. モジュールの選択

IM-Juggling でモジュールを選択します。

  1. <(プロジェクト名)/juggling.im>の「ベースモジュール」タブから「通知機能」を開いてください。

    ../../_images/notice_module_1.png
  2. 通知機能全般をチェックします。

    ../../_images/notice_module_2.png
  3. モバイルへの通知を行う場合、モバイル通知機能をチェックしてください。

    ../../_images/notice_module_3.png
  4. デスクトップへの通知を行う場合、デスクトップ通知機能をチェックしてください。

    ../../_images/notice_module_4.png
  5. メッセージをクリックし、依存関係を解決してください。

    ../../_images/notice_module_5.png
  6. 設定ファイルの解決を行うと、<(プロジェクト名)/conf> 配下に設定ファイルが出力されます。

    ../../_images/notice_module_6.png

11.4.2.2. IM-Notice 設定ファイルの編集

IM-Juggling の <(プロジェクト名)/conf> 配下に出力されたim-notice-config.xmlを開き、以下の設定を行ってください。

  1. <base-url>

    • ベースURLを設定してください。
      この設定はショートカットURLの作成に使用されます。
      未設定の場合、server-context-config.xml で指定したベースURLが使用されます。
      <base-url>http://example.org/imart</base-url>
      
  2. <short-cut-duration-minutes>

    • ショートカットURLの有効期間を設定してください。単位は分です。
      「0」を設定した場合、ショートカットURLは作成されません。
      デフォルトでは43200分=30日が設定されています。
      <short-cut-duration-minutes>43200</short-cut-duration-minutes>
      

11.4.2.3. ベースURLの設定

IM-Noticeへのメッセージ配信処理をジョブ経由で行う場合は、ベースURLの設定が必要です。 「ベースURL」または、「テナント環境情報 」から設定を行ってください。

注意

ベースURLを指定しない場合、以下のエラーが発生します。
jp.co.intra_mart.system.notice.exception.NoticeRuntimeException: [E.NOTICE.CORE.00016] ベースURLを解決できませんでした。

11.4.3. デスクトップ通知機能

デスクトップ通知機能を使用するための設定を行います。

11.4.3.1. スタンドアローン構成の場合

スタンドアローン構成の場合は、Web Application Server とデスクトップ通知のクライアントが直接通信を行います。
IM-Notice MQ設定ファイル(im-notice-mq-config)を設定する必要があります。
../../_images/notice_construction_standalone.png

図 スタンドアローンのサーバ構成例(デスクトップ通知)

11.4.3.1.1. IM-Notice MQ設定ファイルの編集

IM-Juggling の <(プロジェクト名)/conf> 配下に出力されたim-notice-mq-config.xmlを開き、以下の設定を行ってください。
  1. <address>
    • デスクトップ通知で使用するポート番号を設定してください。
      デフォルトでは40608ポートを使用する設定になっています。
      クライアントからサーバまでのネットワーク機器などに対して、ここで指定したポートを開放してください。
      <address bind="true">tcp://*:40608</address>
      
  2. <ping>
    • ping機能の設定をします。
      有効にするには、enable属性に「true」を設定してください。
    • interval-seconds属性で、クライアントにpingを流す間隔を設定します。単位は秒です。
    • time-to-live-seconds属性で、クライアントがサーバに再接続を行うまでの時間を設定します。単位は秒です。
      設定した秒数だけサーバから応答がなければ、クライアントはサーバに再接続を行います。
      <ping enable="true" interval-seconds="270" time-to-live-seconds="300" />
      

    コラム

    環境により、一定時間データが流れないソケットは切断されてしまう場合があります。
    そのような環境では、数分間隔でpingを流し続けることで自動切断を避けることが出来ます。
    (Microsoft AzureやAmazon Elastic Compute Cloudなど)
  3. <endpoint>
    • クライアントの接続先を設定します。
      <address>で設定したポート番号を指定してください。
      <endpoints>
          <endpoint>tcp://example.org:40608</endpoint>
      </endpoints>
      

11.4.3.2. 分散構成やWeb Serverを利用している構成の場合

分散構成やWeb Serverを利用している構成の場合は、ブローカーのサービスを実行するサーバの起動、および設定ファイルの編集が必要です。
../../_images/notice_construction_sa_ws.png

図 WebServerなどを含む分散構成のサーバ構成例(デスクトップ通知)

コラム

ブローカーとは、ネットワーク中継を行うためのプロキシです。

コラム

ブローカーサービスを実行するサーバのシステム要件は「リリースノート」-「システム要件」を参照してください。

11.4.3.2.1. IM-Notice MQ設定ファイルの編集

IM-Juggling で出力されたim-notice-mq-config.xmlを編集してください。
  1. <address>
    bind属性にfalseを指定してください。
    <address bind="false">tcp://{ブローカーを実行しているサーバのホストまたはIPアドレス}:{ブローカーのバックエンドポート番号}</address>
    <ping enable="true" interval-seconds="270" time-to-live-seconds="300" />
    <endpoints>
      <endpoint>tcp://{ブローカーを実行しているサーバのホストまたはIPアドレス}:{ブローカーのフロントエンドポート番号}</endpoint>
    </endpoints>
    

コラム

IM-Notice MQ設定ファイルのその他の項目については IM-Notice MQ設定ファイルの編集 を参照してください。

11.4.3.2.2. ブローカーサービス実行ファイルの取得

ブローカーサービスを実行する実行ファイル(im_notice_mq_broker)を取得します。
弊社サイトのダウンロードライブラリ、または製品メディアイメージから取得してください。

11.4.3.2.3. IM-Notice MQブローカー設定ファイルの編集

取得したブローカーサービス実行ファイルを展開したconfディレクトリ内のim-notice-mq-broker-config.xmlを編集します。
  1. <frontend>
    • デスクトップ通知アプリケーションとの通信を行うポート番号を設定してください。
      デフォルトでは40608ポートを使用する設定になっています。
      クライアントからブローカーまでのネットワーク機器などに対して、ここで指定したポートを開放してください。
      <frontend bind="true">tcp://*:40608</frontend>
      
  2. <backend>
    • Web Application Server との通信を行うポート番号を設定してください。
      デフォルトでは40609ポートを使用する設定になっています。
      ブローカーからサーバまでのネットワーク機器などに対して、ここで指定したポートを開放してください。
      <backend bind="true">tcp://*:40609</backend>
      

コラム

IM-Notice MQブローカー設定ファイルのその他の項目は IM-Notice ブローカー設定ファイルと同様です。
IM-Notice ブローカー設定ファイルについては IM-Notice MQ設定ファイルの編集 を参照してください。

11.4.3.2.4. ブローカーサービスの実行

取得したブローカーサービス実行ファイルを展開したディレクトリにある im_notice_mq_broker-8.0.0.jar をjavaコマンドで実行してください。

フォアグラウンドで動作させる場合(例)

java -jar im_notice_mq_broker-8.0.0.jar
バックグラウンドで動作させる場合(例)
nohup java -jar im_notice_mq_broker-8.0.0.jar > stdout.log 2>stderr.log &

11.4.4. モバイル通知機能(iOS版)

モバイル通知機能を使用するための設定を行います。 iOSへの通知を行うには、Amazon SNSを使用します。

../../_images/notice_construction_ios.png

図 Amazon SNSを利用したサーバ構成例

11.4.4.1. P12証明書ファイルの取得

P12証明書ファイル(IM-Notice Push Notifications Production.p12)を取得します。
弊社サイトのダウンロードライブラリから取得してください。

11.4.4.2. Amazon SNSの設定

Amazon SNSの設定を行います。

  1. Amazon SNS にサインインしてください。
    ../../_images/notice_ios_1.png
  2. リージョンを選択してください。
    ../../_images/notice_ios_2.png
  3. 「Create and Add」から「Add a New App」を選択してください。
    ../../_images/notice_ios_3.png
  4. フォームに以下の内容を入力し、「Add New App」をクリックしてください。

    項目

    説明

    Application Name

    任意の名前を入力します。

    Push Platform

    「Apple Push Notification Service(APNS)」を選択します。

    Choose P12 File

    「IM-Notice Push Notifications Production.p12」を添付します。

    Enter Password

    「intra-mart」と入力し、「Load Credentials from File」をクリックします。

    ../../_images/notice_ios_4.png
  5. 「Apps」にアプリケーションが追加されました。
    ../../_images/notice_ios_5.png
  6. 「Application ARN」を確認することができます。
    設定ファイルを編集する際に必要な文字列ですので、控えておいてください。
    ../../_images/notice_ios_6.png

11.4.4.3. IM-Notice Mobile設定ファイルの編集

IM-Juggling の <(プロジェクト名)/conf> 配下に出力されたim-notice-mobile-config.xmlを開き、以下の設定を行ってください。
  • <proxy>

    1. Amazon SNSへ接続するためにプロキシを使用する場合、設定を行ってください。

      <proxy enable="true">
          <host></host>
          <port xsi:nil="true"></port> <!-- ポート番号を指定する場合は xsi:nil="true" を削除してください。 -->
          <username></username>
          <password></password>
          <workstation></workstation>
          <domain></domain>
      </proxy>
      
  • <asns>

    1. <asns>のname属性に任意の名前を設定してください。

      <asns name="asns-apns">
      
    2. <endpoint>

      • Amazon SNSのリージョンに対応するEndpointを設定してください。
        <endpoint>sns.ap-northeast-1.amazonaws.com</endpoint>
        

        コラム

        Endpointは AWS documentation - Regions and Endpoints で確認できます。
        リージョンが「Asia Pacific (Tokyo)」の場合、Endpoint は「sns.ap-northeast-1.amazonaws.com」です。
    3. <platform-application-arn>

      <platform-application-arn>arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:app/APNS/IM-Notice_APNS</platform-application-arn>
      
    4. <access-key>

      • アクセスキーを設定してください。
    5. <secret-key>

      • シークレットキーを設定してください。

      コラム

      アクセスキーおよびシークレットキーは AWS Identity and Access Management(IAM) で作成することができます。
      ../../_images/notice_access_key.png
  • <push type=”ios” />

    1. engine属性に、<asns>のname属性に設定した名前を指定してください。

      <push type="ios" engine="asns-apns" />
      

11.4.5. モバイル通知機能(Android版)

モバイル通知機能を使用するための設定を行います。 Androidへの通知を行うには、以下の2種類の構成が利用できます。

  • GCMA を使用する場合の設定方法は、 GCMAを使用する場合 を参照してください。
    ../../_images/notice_construction_android_1.png

    図 GCMA を使用する場合のサーバ構成例

  • GCMA+Amazon SNSを使用する場合の設定方法は、 GCMA+Amazon SNSを使用する場合 を参照してください。
    ../../_images/notice_construction_android_2.png

    図 GCMA+Amazon SNS を使用する場合のサーバ構成例

コラム

Amazon SNSを組み合わせて使用することで、Push通知対象となっているデバイスのトークンリストや、その状態(有効あるいは無効)をAmazon SNSで一覧することができます。
また、AndroidとiOSを併用する場合、Amazon SNSで一元管理することができます。

11.4.5.1. GCMAを使用する場合

GCMAを使用しAndroidへの通知を行う場合、以下の設定を行ってください。

11.4.5.1.1. GCMAの設定

GCMAの設定を行います。

  1. Google Play Developer Console にログインしてください。
  2. プロジェクトを作成します。
    ../../_images/notice_android_gcma_1.png
  3. フォームに以下の内容を入力し、「作成」をクリックしてください。

    項目

    説明

    プロジェクト名

    任意の名前を入力してください。

    プロジェクトID

    任意のIDを入力してください。

    ../../_images/notice_android_gcma_2.png
  4. プロジェクトの概要から「プロジェクト番号」を確認することができます。
    設定ファイルを編集する際に必要な文字列ですので、控えておいてください。
    ../../_images/notice_android_gcma_3.png
  5. 「Google Cloud Messaging for Android」を有効にします。
    ../../_images/notice_android_gcma_4.png
  6. サーバーアプリケーションのキーを作成します。
    「新しいキーを作成」をクリックします。
    ../../_images/notice_android_gcma_5.png
    「サーバーキー」を選択し、キーを作成してください。
    ../../_images/notice_android_gcma_6.png
  7. 「APIキー」を確認することができます。
    設定ファイルを編集する際に必要な文字列ですので、控えておいてください。
    ../../_images/notice_android_gcma_7.png

11.4.5.1.2. IM-Notice Mobile設定ファイルの編集

IM-Juggling の <(プロジェクト名)/conf> 配下に出力されたim-notice-mobile-config.xmlを開き、以下の設定を行ってください。
  • <proxy>

    1. Google Cloud Messaging for Androidへ接続するためにプロキシを使用する場合、設定を行ってください。

      <proxy enable="true">
          <host></host>
          <port xsi:nil="true"></port> <!-- ポート番号を指定する場合は xsi:nil="true" を削除してください。 -->
          <username></username>
          <password></password>
          <workstation></workstation>
          <domain></domain>
      </proxy>
      
  • <gcma>

    1. <gcma>のname属性に任意の名前を設定してください。

      <gcma name="gcma">
      
    2. <api-key>

      • APIキーを設定してください。
    3. <project-number>

      • プロジェクト番号を設定してください。

      コラム

      APIキーおよびプロジェクト番号の確認方法は、 GCMAの設定 を参照してください。
  • <push type=”android” />

    1. engine属性に、<gcma>のname属性に設定した名前を指定してください。
    <push type="android" engine="gcma" />
    
  • <max-push-subject-length>

    1. Push通知受信時に表示するタイトルの最大文字数を設定してください。
    <max-push-subject-length>30</max-push-subject-length>
    
  • <max-push-body-length>

    1. Push通知受信時に表示する本文の最長文字数を設定してください。
    <max-push-body-length>70</max-push-body-length>
    

11.4.5.2. GCMA+Amazon SNSを使用する場合

GCMAとAmazon SNSを使用しAndroidへの通知を行う場合、以下の設定を行ってください。

11.4.5.2.1. GCMA の設定

GCMAの設定を行います。

コラム

GCMAの設定方法は、 GCMAの設定 を参照してください。

11.4.5.2.2. Amazon SNS の設定

Amazon SNSの設定を行います。

  1. Amazon SNS にサインインしてください。
    ../../_images/notice_android_asns_1.png
  2. リージョンを選択してください。
    ../../_images/notice_android_asns_2.png
  3. 「Create and Add」から「Add a New App」を選択してください。
    ../../_images/notice_android_asns_3.png
  4. フォームに以下の内容を入力し、「Add New App」をクリックしてください。

    項目

    説明

    Application Name

    任意の名前を入力します。

    Push Platform

    「Google Cloud Messaging(GCM)」を選択します。

    API Key

    GCMA の設定 で作成したAPIキーを入力します。

    ../../_images/notice_android_asns_4.png

  5. 「Apps」にアプリケーションが追加されました。
    ../../_images/notice_android_asns_5.png
  6. 「Application ARN」を確認することができます。
    設定ファイルを編集する際に必要な文字列ですので、控えておいてください。
    ../../_images/notice_android_asns_6.png

11.4.5.2.3. IM-Notice Mobile設定ファイルの編集

IM-Juggling の <(プロジェクト名)/conf> 配下に出力されたim-notice-mobile-config.xmlを開き、以下の設定を行ってください。
  • <proxy>

    1. Google Cloud Messaging for AndroidやAmazon SNSへ接続するためにプロキシを使用する場合、設定を行ってください。

      <proxy enable="true">
          <host></host>
          <port xsi:nil="true"></port> <!-- ポート番号を指定する場合は xsi:nil="true" を削除してください。 -->
          <username></username>
          <password></password>
          <workstation></workstation>
          <domain></domain>
      </proxy>
      
  • <asns>

    1. <asns>のname属性に任意の名前を設定してください。

      <asns name="asns-gcm">
      
    2. <endpoint>

      • Amazon SNSのリージョンに対応するEndpointを設定してください。
        <endpoint>sns.ap-northeast-1.amazonaws.com</endpoint>
        

        コラム

        Endpointは AWS documentation - Regions and Endpoints で確認できます。
        リージョンが「Asia Pacific (Tokyo)」の場合、Endpointは「sns.ap-northeast-1.amazonaws.com」です。
    3. <platform-application-arn>

      • Application ARNを設定してください。

        コラム

        Application ARNの確認方法は、 Amazon SNS の設定 を参照してください。
    4. <access-key>

      • アクセスキーを設定してください。
    5. <secret-key>

      • シークレットキーを設定してください。

      コラム

      アクセスキーおよびシークレットキーは AWS Identity and Access Management(IAM) で作成することができます。
      ../../_images/notice_access_key.png
    6. <gcma-project-number>

      • プロジェクト番号を設定してください。

      コラム

      プロジェクト番号の確認方法は、 GCMAの設定 を参照してください。
  • <push type=”android” />

    1. engine属性に、<asns>のname属性に設定した名前を指定してください。

      <push type="android" engine="asns-gcm" />
      
  • <max-push-subject-length>

    1. Push通知受信時に表示するタイトルの最大文字数を設定してください。
    <max-push-subject-length>30</max-push-subject-length>
    
  • <max-push-body-length>

    1. Push通知受信時に表示する本文の最長文字数を設定してください。
    <max-push-body-length>70</max-push-body-length>