モバイル通信事業者の通知イベントの技術的な詳細

このトピックでは、モバイル通信事業者の通知イベントの技術的な詳細について説明します。

イベント ペイロード

MobileOperatorNotification イベント ペイロードには、次のフィールドがあります。

フィールド 説明
[MessageType] イベントをトリガーしたメッセージの列挙。
Interface イベントに関連付けられている物理インターフェイスに対応する GUID。
EncodingType MessageType が SMS/USSD の場合のメッセージのエンコード方法。
MessageDataSize MessageType が SMS/USSD の場合のメッセージのサイズ (バイト単位)。
メッセージ MessageType が SMS/USSD の場合の受信された生メッセージ。

MobileOperatorNotification イベントを使用すると、イベント ペイロードで MessageType フィールドを使用して区別することで、「モバイル通信事業者の通知のシナリオ」で説明されている各シナリオを実現できます。 MessageType は、次のように列挙されます。

ゴエモンが行く! 生命と向きあって Type
0 GSM SMS
1 CDMA SMS
2 USSD
3 DataPlanThresholdReached
4 DataPlanReset
5 DataPlanDeleted
6 ProfileConnected
7 ProfileDisconnected
8 RegisteredRoaming
9 RegisteredHome
10 TetheringEntitlementCheck

MobileOperatorNotification イベントに関連付けられている作業項目は、MessageType を効果的に区別するロジックで始まり、シナリオごとに適切なコードを実行する必要があります。

GSM/CDMA SMS と USSD

SMS や USSD を含む受信通信事業者メッセージは、対応する適切な MessageType と共に MobileOperatorNotification イベントをトリガーします。 これらの種類に固有なのは、EncodingTypeMessageDataSize、および Message です。

DataPlanThresholdReached

既定では、このメッセージの種類は無効になっています。 これを有効にするには、プロビジョニング メタデータを使用して、次に示すように DataUsageInMobileOperatorNotificationEnabled フィールドを指定します。

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
  <Global>
    <CarrierId>{2c85b76b-f859-47c4-8122-721fe8b6c25f}</CarrierId>
    <SubscriberId>012345678901234</SubscriberId>
  </Global>
  <MBNProfiles>
    <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
      <Name>Contoso</Name>
      <AssociatedPlan>SamplePlan</AssociatedPlan>
      <Context>
        <AccessString>Contoso.com</AccessString>
        <UserLogonCred>
          <UserName>User</UserName>
          <Password>[PLACEHOLDER]</Password>
        </UserLogonCred>
      </Context>
    </DefaultProfile>
  </MBNProfiles>
  <Plans>
    <Plan xmlns="http://www.microsoft.com/networking/CarrierControl/Plans/v1" Name="SamplePlan">
      <Description PlanType="Fixed">
        <DataLimitInMegabytes>500</DataLimitInMegabytes>
        <DataUsageInMobileOperatorNotificationEnabled>true</DataUsageInMobileOperatorNotificationEnabled>
      </Description>
    </Plan>
  </Plans>
</CarrierProvisioning>

アカウントプロビジョニングメタデータの詳細については、「アカウントプロビジョニング」を参照してください。

イベントがこの MessageType を使用して生成されるのは、ローカル データ カウンターによって、モバイル ブロードバンド インターフェイスでの使用量 (送受信バイト数) が前回の発生以降に 5% 変更されたと推定される場合です。ただし、次のケースを除きます。

  1. データ プランの制限が指定されていない場合に、ホーム ネットワーク (非ローミング) に接続されると、このイベントはローカル データ使用量の 100 MB ごとにトリガーされます。

  2. ローミング ネットワークに接続された場合には、データ プランの制限は適用されず、このイベントはローカル データ使用量の 5 MB ごとにトリガーされます。

Windows 8 のローカル データ カウンターは、1 分ごとに更新されます。このイベントは、説明されているすべてのシナリオで多くても 1 分に 1 回しか生成されません。 Windows 8.1 では、5% のしきい値に達すると、イベントがリアルタイムに伝達されます。

Note

この情報は優れた基本的ガイドですが、Windows では、同じデータ制限 (ファミリ プランや SIM スワップなど) を共有する他のデバイスでの未請求のトラフィックや使用量を考慮することはできません。 モバイル通信事業者アプリでは、ローカル データ カウンターの使用を通信事業者独自の課金システムとの前回の同期以降の使用量を概算する目的に限定する必要があります。 既に処理されているデータ使用量に関しては、課金システムを「信頼できる」と見なす必要があります。

DataPlanReset

プランのリセット日に、Data Usage and Subscription Manager (DUSM) は、ユーザーの現在のローカル データ使用量をゼロにリセットします。

DataPlanDeleted

有効期限が固定されている前払いのデータ プランの場合、DUSM はアカウントに関連付けられている接続プロファイルを有効期限日に削除し、MobileOperatorNotification イベントはこの MessageType を使用してトリガーされます。 接続プロファイルが削除されると、Windows 接続マネージャーは、接続プロファイルによって記述されたネットワークへの自動的な接続を試みなくなります。

ProfileConnected と ProfileDisconnected

MobileOperatorNotification イベントは、Windows 接続マネージャーが通信事業者 エクスペリエンス メタデータによって提供されるネットワーク プロファイルに接続すると、これらの MessageType で生成されます。 このイベントは、スリープ/再開後の最初の接続を含め、接続と切断のたびにトリガーされます。 また、アプリとサービスのメタデータがダウンロードされてインストールされるときに、デバイスが既に接続されていた場合にもトリガーされます。

ProfileConnected MessageType は、モバイル ブロードバンド インターフェイスの L2 接続でトリガーされます。

Note

このトリガーは、ネットワーク識別が完了する前に発生します。 ネットワーク識別によってネットワークの接続レベルが特定されると、NetworkStatusChanged イベント (NetworkInformation API の一部) が生成されます。 ネットワーク識別の詳細については、「クイック スタート: ネットワーク接続情報NetworkInformation クラスの取得」を参照してください。

RegisteredRoaming と RegisteredHome

MobileOperatorNotification イベントは、Windows 接続マネージャーがローミング ネットワークに登録されると、これらの MessageType で生成されます。 このイベントは、スリープ/再開後の最初の登録を含め、すべての登録でトリガーされます。 また、アプリとサービスのメタデータがダウンロードされてインストールされるときに、デバイスが既にネットワークに登録されていた場合にもトリガーされます。

アプリは、ローミング ネットワーク上で登録するときに 1 回だけ、そしてホーム ネットワークに戻ったときに 1 回だけ、ユーザーに通知する必要があります。 このイベントは登録のたびにトリガーされるため、アプリは前回の登録状態をアプリのセッション データで追跡する役割を担います。

TetheringEntitlementCheck

MobileOperatorNotification イベントは、ユーザーがインターネット共有機能を有効にすると、この MessageType で生成されます。 このイベントは、モバイル通信事業者がサービス メタデータ スキーマの AllowTethering 要素を 「EntitlementCheckRequired」に設定している限り、ユーザーがインターネット共有を使用しようとするたびにトリガーされます。 サービス メタデータ パッケージ スキーマの詳細については、「サービス メタデータ パッケージスキーマ リファレンス」を参照してください。

アプリは、モバイル通信事業者ネットワークでサポートされている適切なエンタイトルメント チェック メカニズムを実行し、その結果を Windows.Networking.NetworkOperators 名前空間の NetworkOperatorNotificationEventDetails クラスの AuthorizeTethering メソッドを使用して、システムに送信する必要があります。 アプリにエンタイトルメント チェックを実行する機能がない場合、モバイル通信事業者はイベントが絶対に生成されないように、サービス メタデータの AllowTethering 要素を「Always」または「Never」に変更する必要があります。

メタデータを使用して MobileOperatorNotification イベントに登録する

一般に、System Event Broker に作業項目を登録するには、少なくとも 1 回はアプリを実行する必要があります。 ただし、モバイル ブロードバンドの主要なシナリオを完了するには MobileOperatorNotification イベントが必要であるため、このイベントはサービス メタデータを使用してモバイル ブロードバンド アプリに関連付けられます。 サービス メタデータで、DeviceCompanionApplications 要素を構成します。

<DeviceCompanionApplications>
  <Package>
    <Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
    <Applications>
      <Application Id="MyOperatorNotification" />
        <DeviceNotificationHandlers>
          <DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
      </DeviceNotificationHandlers>
    </Applications>
  </Package>
</DeviceCompanionApplications>

EventID 属性は、デバイスに予期されるイベントの種類をシステムに通知します。 EventAsset 属性の値は、バックグラウンド タスクを実装するエントリ ポイントを指す必要があります。 これにより、その特定のイベントが発生したときに実行すべきタスクがシステムに通知されます。

この例を使用して、システムはそのデバイスに固有のイベントを作成し登録します。 また、このイベントのモバイル ブロードバンド アプリも登録します。 アプリには、通信事業者通知を受け取るたびにシステムによって実行される、backgroundtask.jsという JavaScript ファイルが必要です。

モバイル ブロードバンド アプリが C# で記述されている場合、イベント アセットは backgroundtask インターフェイスを実装するランタイム クラスを指す必要があります。

<DeviceNotificationHandlers>
  <DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />

サービス メタデータとアプリがダウンロードされると、アプリが実行される前に、デバイス セットアップ マネージャーが適切な作業項目を System Event Broker に登録します。 作業項目が登録された直後に、モバイル ブロードバンド デバイスが登録されるか、ネットワークに接続されると、MobileOperatorNotification イベントが、対応する MessageType と共にトリガーされます。

メタデータ内のバックグラウンド タスクの登録を変更する

バックグラウンド タスクのエントリ ポイントが、モバイル ブロードバンド アプリの更新バージョンで変更された場合は、サービス メタデータの DeviceNotificationHandler 要素も変更する必要があります。

サービス メタデータは、Windows 8、Windows 8.1、および Windows 10 を実行しているコンピューター上で自動的に更新されます。 モバイル ブロードバンド アプリは、Microsoft Store で更新されます。 サービス メタデータで DeviceNotificationHandler バックグラウンド タスクの登録を変更することは避けてください。 変更が必要な場合は、モバイル ブロードバンド アプリをまだ更新していないユーザーのために機能を維持するため、サポートされているすべてのバージョンのモバイル ブロードバンド アプリで使用されるすべてのさまざまなバックグラウンド タスク エントリ ポイントへの参照をサービス メタデータに含める必要があります。

プロビジョニング XML でフィルター規則を定義する

Windows は、開発者が作成した XML ベースのプロビジョニング ファイルを受け入れます。 プロビジョニング XML のサンプル バージョンを次に示します。

<?xml version="1.0" encoding="utf-8"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
    <Global>
        <!-- Adjust the Carrier ID to fit match the Service Number in service metadata. Refer to the documentation about CarrierId. -->
        <CarrierId>{11111111-1111-1111-1111-111111111111}</CarrierId>
        <!-- Adjust the Susbscriber ID. Refer to the documentation about Subscriber ID's. -->
        <SubscriberId>1234567890</SubscriberId>
    </Global>
    <MBNProfiles>
        <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
            <!-- Adjust the profile name -->
            <Name>Contoso</Name>
          <AssociatedPlan>Limited</AssociatedPlan>
            <!-- Adjust the home provider name for the given SIM/Device -->
            <HomeProviderName>Contoso</HomeProviderName>
            <Context>
                <!-- Adjust the access string to your APN. -->
                <AccessString>Contoso.Contoso</AccessString>
                <!-- Adjust the UserLogonCred to fit your UserLogonCred. Refer to the documentation about UserLogonCred's. -->
                <UserLogonCred>
                    <UserName>user</UserName>
                    <Password>[PLACEHOLDER]</Password>
                </UserLogonCred>
            </Context>
        </DefaultProfile>
      <Messages xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
        <Message RuleId="Sample1" Silent="true">
          <SMSBearer ClassZeroOnly="false" Sender="18005551212"/>
          <!-- [^]* matches all messages from this sender, regardless of content -->
          <Pattern>[^]*</Pattern>
          <!-- Because no Fields are specified, this message will be passed to the operator app without parsing. -->
        </Message>
        <Message RuleId="Sample2" Silent="false">
          <!-- Parsing a simple usage message. -->
          <USSDBearer/>
          <Pattern>(\d+\.\d+)(\w+) of (\d+)(\w+) used as of (\S+)</Pattern>
          <!-- Using these field definitions, Windows will automatically update usage data before passing the message
               to the operator app. -->
          <Units G="GB" M="MB"/>
          <Fields>
            <!-- These fields are currently unordered, but an order will be required in RC. -->
            <Usage Group="1" UnitGroup="2"/>
            <UsageTimestamp Group="5" Format="%I:%M%p on %d %b"/>
            <DataLimit Group="3" UnitGroup="4"/>
          </Fields>
        </Message>
      </Messages>
  </MBNProfiles>
  <Provisioning />
</CarrierProvisioning>

アカウントプロビジョニングメタデータの詳細については、「アカウントプロビジョニング」を参照してください。

テキスト メッセージを通信事業者メッセージとして識別するための規則は、この XML で定義できます。

  • 許可される送信者 Sender 属性は、通知の到着が許可された予約済み送信者アドレスを指定します。 (この番号は、SMS メッセージで受信した送信者番号 (国際形式を含む) と正確に一致している必要があります)。

  • パターン テキスト メッセージからデータ フィールドを識別し、必要に応じて抽出する正規表現。 送信者からのすべてのメッセージを照合するには、パターン [^]* を使用します。

モバイル通信事業者の通知とシステム イベントを有効にする

インターネット共有エクスペリエンスの作成と構成