Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

プッシュ通知の構成と使用法

この章では、プッシュ通知のサービス、プロセス、およびオペレーションの使用法を説明します。この章は以下の節で構成されています。

プッシュ通知のメッセージ・タイプ

プッシュ通知では、以下のメッセージ・タイプが使用されます。

NotificationInfo

EnsLib.PushNotifications.NotificationInfoOpens in a new tab クラスには、デバイスにプッシュ送信される通知内の情報が含まれています。

プロパティ 説明
AlertNotification ユーザに通知として表示される文字列。
BadgeNotification ユーザに表示されるアイコン内の整数。例えば、これを使用して未読メッセージ数を示すことができます。
SoundNotification デバイス上で再生されるサウンドを指定する文字列。
ExpiresUTC 当該通知が期限切れになる日時を示すタイムスタンプ。当該通知がこの日時までにデバイスに配信されない場合は、サーバは当該通知をデバイスに送信しません。
Data JSON 形式の名前と値のペアが含まれた文字列。Data には、モバイル・アプリ内の通知処理コードで使用される名前と値が含まれています。
UrlNotification 将来の使用のために予約されています。
CollapseKey 将来の使用のために予約されています。

NotificationRequest

EnsLib.PushNotifications.NotificationRequestOpens in a new tab クラスには EnsLib.PushNotifications.NotificationInfoOpens in a new tab クラスが含まれていると共に、当該通知を受信するデバイスが指定されています。

プロパティ 説明
AppIdentifier GCM 通知専用の文字列であり、当該通知が関連付けられているアプリを識別します。
Identifiers 当該通知を受け取るデバイスを指定する文字列。APNS の場合は、このデバイスはデバイス・トークンによって指定されます。GCM の場合は、このデバイスは登録 ID として指定されます。
Service 当該デバイスが GCM デバイスなのか APNS デバイスなのかを識別します。Service の値は “GCM” または “APNS” です。

NotificationResponse

EnsLib.PushNotifications.NotificationResponseOpens in a new tab クラスには、APNS サーバまたは GCM サーバから返された情報が含まれています。

プロパティ 説明
DeliveredAtUTC 当該通知が APNS サーバまたは GCM サーバに送信された時刻を示すタイムスタンプ。
MessageIds サーバによって返されたメッセージ ID のリストが含まれた文字列。
MulticastId GCM サーバによって返されたマルチキャスト ID が含まれた文字列。

NotificationByIdentityRequest

EnsLib.PushNotifications.IdentityManager.NotificationByIdentityRequestOpens in a new tab クラスには EnsLib.PushNotifications.NotificationInfoOpens in a new tab クラスが含まれていると共に、当該通知の送信先となる Identity Manager に登録済みの ID が指定されています。

プロパティ 説明
AssociatedIdentity 当該通知を受信する ID を指定する文字列。

AssociatedIdentity の値には、テーブル内で一意である任意の文字列を指定できます。一般に、この値はアプリケーション内でユーザを識別するログイン名などの文字列です。

NotificationByIdentityResponse

EnsLib.PushNotifications.IdentityManager.NotificationByIdentityResponseOpens in a new tab クラスは、ターゲットに送信された NotificationRequest メッセージの数を返します。これは、AssociatedIdentity に登録されたデバイスの数と同じです。

プロパティ 説明
NotificationResponse Identity Manager のターゲットに送信される NotificationRequest メッセージの数を指定する整数。

APNS オペレーションを使用した通知のプッシュ送信

EnsLib.PushNotifications.APNS.OperationOpens in a new tab は、通知要求を APNS サーバに送信して、指定されたデバイスに転送します。APNS サーバは、呼び出しごとに 1 台のデバイスに通知をプッシュ送信します。APNS サーバは通常は何の情報も返しませんが、エラーが発生した場合はその旨を示す情報を返します。

以下の設定を APNS オペレーションについて構成します。

設定 説明

PushServerAddress

Apple プッシュ通知サーバのホスト名。値は gateway.sandbox.push.apple.com です。

PushServerPort

Apple プッシュ通知サーバ・インタフェース用のポート。値は 2195 です。

SSLConfig

SSL 構成の Caché テーブル内の構成名。SSL はアプリと関連付けられており、APNS サービス用に Apple によって提供されているものである必要があります。例えば、MyAppAppleSSL という構成名値を指定できます。

ConnectTimeout

SSL 接続の秒単位のタイムアウト時間。非アクティブ状態がこの時間だけ続くと、SSL 接続が終了されます。デフォルト値は 30 です。

ResponseTimeout

接続要求への応答を待つ秒単位の時間。デフォルト値は 5 です。

NotificationProtocol

APNS 通知プロトコルを指定します。次のいずれかの値を指定します。

  • Simple— 何の値も返さず、プロトコル・メッセージでエラーが発生している場合でもユーザに通知しない Simple 通知プロトコル。

  • Enhanced— プロトコル・メッセージにエラーが含まれている場合は値を返す Enhanced 通知プロトコル。このプロトコルは、エラーのないメッセージについては値を返しません。

  • Modern— 将来の使用のために予約されています。APNS オペレーションは、Modern 通知プロトコルをサポートしていません。

SSL はリモート・アプリと関連付けられていますが、同じ SSL がアプリのすべてのユーザに対して使用されます。お使いのアプリケーションが単一のアプリに通知をプッシュ送信する場合は、プロダクション内で 1 つの SSL と 1 つの APNS オペレーションのみが必要です。お使いのアプリケーションが Apple デバイス上で実行されている複数のアプリに通知をプッシュ送信する場合は、アプリごとに 1 つの SSL が必要であると共に、アプリごとにその SSL を使用して構成された 1 つの対応する APNS オペレーションが必要です。ルータを使用している場合は、各通知を正しい APNS オペレーション宛てに送信する必要があります。例えば、デバイス・トークンを対応するオペレーションに関連付けるルックアップ・テーブルを作成してから、そのルックアップ・テーブルをルーティング・ルール内で使用できます。

APNS プロトコルは、Enhanced プロトコルのエラー・ステータス以外の値を返しません。したがって、Enhanced プロトコル・メッセージでエラーが発生してないことを検知するための唯一の方法は、戻りエラー応答が検知されるまで待つことです。エラー応答が相当の時間内に受信されない場合は、オペレーションはプロトコル・メッセージが正常に処理されたと見なします。エラー応答を待つ時間の長さは、ResponseTimeout 設定で指定します。このタイムアウト値は、APNS サーバからのエラー応答を捕捉するのに十分な長さである必要がありますが、このタイムアウト値が経過するまで APNS サーバは別の要求を処理できなくなるため、このタイムアウト値を必要以上に長くすることは避けてください。デフォルト値の 5 秒を使用した場合は、オペレーション・インスタンスは 5 秒あたり 1 つの要求のみを処理できます。したがって、プール・サイズは、このタイムアウト時間内に通常発生する要求数を処理できる十分な大きさに設定する必要があります。

Simple プロトコルを使用している場合は、エラーが発生した場合でも何の値も返されません。Simple プロトコルの場合は、ResponseTimeout を最小値である 0 秒以外の値に設定することにメリットはありません。

SSL 証明書は Apple サーバによって提供されます。各アプリは固有の SSL を必要とします。

GCM オペレーションを使用した通知のプッシュ送信

以下の設定を GCM オペレーションについて構成します。

設定 説明

PushServer

Google Cloud メッセージング REST インタフェースの URL。値は https://android.googleapis.com/gcm/send です。

SSLConfig

SSL 構成の Caché テーブル内の構成名。例えば、MyAppSSL という値を指定できます。

Timeout

REST 応答の秒単位のタイムアウト時間。デフォルト値は 30 です。

NotificationProtocol

GCM 通知プロトコルを指定します。次のいずれかの値を指定します。

  • HTTP— HTTP REST プロトコル。

  • XMPP— 将来の使用のために予約されています。GCM オペレーションは、常時接続型の双方向プロトコルである XMPP をサポートしていません。

Identity Manager へのデバイスの登録

デバイス・トークンとアプリケーションの 1 つ以上のペアを AssociatedIdentity 文字列識別子に登録できます。アプリケーションはこの文字列識別子を使用して、この識別子に関連付けられたすべてのデバイスに通知をプッシュ送信できます。EnsLib.PushNotifications.IdentityManager.DeviceTrackingOpens in a new tab クラスには、以下のメソッドが用意されています。

  • AssociateDeviceWithAppToken— デバイス・トークン、AppID、およびサービスを AssociatedIdentity 文字列識別子に関連付けます。

  • DisassociateDeviceWithAppToken— デバイス・トークン、AppID、およびサービスと AssociatedIdentity 文字列識別子の関連付けを解除します。

  • FindDeviceByAppToken— 指定された AssociatedIdentity 文字列識別子に関連付けられたすべてのデバイスを検出します。DeviceTracking オブジェクトを返します。

  • FindDeviceByDeviceAndAppIds— 指定されたデバイス・トークンと AppId を持つすべてのデバイスを検出します。DeviceTracking オブジェクトを返します。

Identity Manager を使用した通知のプッシュ送信

Identity Manager は NotificationByIdentityRequest メッセージを受信すると、以下の処理を実行します。

  1. Identity Manager は SQL テーブルに対してクエリを発行して、メッセージ内の AssociatedIdentity に関連付けられたデバイスを検出します。

  2. このクエリによって 1 台以上のデバイスが返された場合は、このクエリによって返されたレコードごとに 1 つの NotificationMessage が作成されます。この NotificationMessage 内では、次の処理が実行されます。

    • NotificationInfo が受信 NotationByIdentityRequest 内の NotificationInfo に設定されます。

    • Identities がレコード内のデバイス・トークンに設定されます。

    • AppId がレコード内の AppID (これが設定されている場合) に設定されます。

    • Service がレコード内の Service に設定されます。

  3. 各メッセージがターゲット・コンポーネントに送信されます。

Note:

IdentityManager は 1 つの NotificationByIdentityRequest を受信して、関連付けられたデバイスごとに 1 つの NotificationMessage を作成します。IdentityManager によって送信される各 NotificationMessage は、Identities リスト内に 1 つのデバイス・トークンを保有しています。GCM サーバを使用すると、1 回の呼び出しで単一ユーザの複数のデバイスに単一の通知をプッシュ送信できますが、IdentityManager はこの機能を使用しません。IdentityManager を使用せずに下位レベルの呼び出しを使用して、単一の通知を複数の GCM デバイスに送信できます。

AppService を使用した通知のプッシュ送信

Ensemble プロダクション環境外の ObjectScript でプッシュ通知を生成する場合は、プッシュ通知 AppService を使用して通知を Ensemble 環境に送り込むことができます。この AppService は Ensemble へのゲートウェイの役割を果たします。この AppService を呼び出すには、以下の手順を実行します。

  1. AppService を Ensemble プロダクションに追加します。

  2. ターゲットがメッセージを IdentityManager、ルータ、または直接プッシュ通知オペレーションに送信するように構成します。

  3. コード内で、EnsLib.PushNotifications.NotificationRequestOpens in a new tab メッセージを作成してその内容を入力します。

  4. NotificationRequest をパラメータとして渡して、AppService の SendSync メソッドを呼び出します。

FeedbackOpens in a new tab