新しい SMS で受信したバックグラウンド イベントを実行する

モバイル ブロードバンド SMS プラットフォームは、モバイル ネットワーク オペレーターからの管理 SMS 通知か一般的な SMS メッセージかに応じて、受信される新しい SMS データに対して個別のシステム イベントを提供します。 モバイル ネットワーク オペレーターから受信した新しい管理 SMS 通知のバックグラウンド システム イベントには、モバイル ブロードバンド アプリのみがアクセスできます。

アプリは、SMS を使用してバックグラウンド タスクで新しく受信した SMS メッセージを読み取るために、ユーザーの同意を既に受け取っている必要があります。 アプリが初めて SMS にアクセスする場合、アプリはバックグラウンド タスクからシステム SMS デバイスの同意プロンプトをトリガーできないため、バックグラウンド タスクから新しく受信した SMS メッセージの内容を読み取ることができません。

次のコード例は、新しい SMS メッセージを受信したときに実行するように設計されたバックグラウンド タスクを示しています。

C# バックグラウンド タスク コード

namespace SmsBackgroundSample
{
  public sealed class SmsBackgroundTask : IBackgroundTask
  { 
    // The Run method is the entry point of a background task.

    public void Run(IBackgroundTaskInstance taskInstance)
    {
      // Associate a cancellation handler with the background task.

      taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);

      ManualResetEvent manualEventWaiter = new ManualResetEvent(false);
      manualEventWaiter.Reset();

      // Do the background task activity.

      DisplayToastAsync(taskInstance, manualEventWaiter);

      // Wait until the async operation is done. We need to do this else the background process will exit.
      manualEventWaiter.WaitOne(5000);

            Debug.Print("Background " + taskInstance.Task.Name + (" process ran"));

  }

  async void DisplayToastAsync(IBackgroundTaskInstance taskInstance, ManualResetEvent manualEventWaiter)
  {
    SmsReceivedEventDetails smsDetails = (SmsReceivedEventDetails)taskInstance.TriggerDetails;
    SmsBinaryMessage smsEncodedmsg = (SmsBinaryMessage) smsDetails.BinaryMessageMessage;
    SmsTextMessage smsTextMessage = Windows.Devices.Sms.SmsTextMessage.FromBinaryMessage(smsEncodedmsg);

    XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
    XmlNodeList stringElements = toastXml.GetElementsByTagName("text");

    stringElements.Item(0).AppendChild(toastXml.CreateTextNode(smsTextMessage.From));
    stringElements.Item(1).AppendChild(toastXml.CreateTextNode(smsTextMessage.Body));

    ToastNotification notification = new ToastNotification(toastXml);
    ToastNotificationManager.CreateToastNotifier().Show(notification);

    manualEventWaiter.Set();
  }

}

バックグラウンド タスクを登録するための JavaScript アプリ コード

var triggerAway = new Windows.ApplicationModel.Background.SystemTrigger(Windows.ApplicationModel.Background.SystemTriggerType.smsReceived, false);
var builderAway = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();

builderAway.setTrigger(triggerAway);
builderAway.taskEntryPoint = "HelloWorldBackground.BackgroundTask1";
builderAway.name = "Sms";

var taskAway = builderAway.register();
taskAway.addEventListener("progress", new ProgressHandler(taskAway).onProgress);
taskAway.addEventListener("completed", new CompleteHandler(taskAway).onCompleted);

SMS アプリの開発