Windows Phoneアプリケーション開発入門

第33回 Mangoで追加されたLancherとChooserを使ってみよう!

この記事を読むのに必要な時間:およそ 7 分

SaveContactTask

SaveContactTaskは,ユーザーを連絡帳に追加することができます。

private void btnSaveContactTask_Click(object sender, RoutedEventArgs e)
{
    SaveContactTask saveContactTask = new SaveContactTask();
    saveContactTask.Company = "Softbuild";
    saveContactTask.FirstName = "Kenji";
    saveContactTask.LastName = "Wada";
    saveContactTask.MobilePhone = "090123456789";
    saveContactTask.Website = "http://ch3cooh.jp/";

    Observable.FromEvent<SaveContactResult>(
        h => saveContactTask.Completed += h,
        h => saveContactTask.Completed -= h)
        .Subscribe(ex =>
        {
            // 連絡先の保存に成功
            if (ex.EventArgs.TaskResult == TaskResult.OK)
                MessageBox.Show("Save Success!");
        });

    saveContactTask.Show();
}
Private Sub btnSaveContactTask_Click(sender As Object, e As RoutedEventArgs)
    Dim saveContactTask As New SaveContactTask()
    saveContactTask.Company = "Softbuild" 
    saveContactTask.FirstName = "Kenji" 
    saveContactTask.LastName = "Wada" 
    saveContactTask.MobilePhone = "090123456789" 
    saveContactTask.Website = "http://ch3cooh.jp/" 

    Observable.FromEvent(Of SaveContactResult)(
        Sub(h) AddHandler saveContactTask.Completed, h,
        Sub(h) RemoveHandler saveContactTask.Completed, h) _
    .Subscribe(Sub(ex)
                   ' 連絡先の保存に成功
                   If ex.EventArgs.TaskResult = TaskResult.OK Then
                       MessageBox.Show("Save Success!")
                   End If
               End Sub)

    saveContactTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。Windows Phoneでは基本的にアドレス帳はクラウド側に保存することになります。

画像

追加を行いたいサービス(スクリーンショット上には,Windows LiveとGoogleと表示されている)からWindows Liveを選択すると,ユーザーが編集可能な連絡先の作成画面が表示されます。コード上で設定したプロパティが反映されているのが判るかと思います。

画像

設定が可能な項目は27項目あり,本記事にてすべての項目を説明することができませんので,MSDNライブラリのSaveContactTask Propertiesを参照して頂ければと思います。

ShareLinkTask,ShareStatusTask

Windows Phone OS 7.1で追加されたLauncherです。ShareLinkTaskは,ユーザーの選択したソーシャルネットワークサービスで好きなリンクを共有することができます。

Windows Phone OS 7.0の頃からWindows Live,Facebookに対応していました。⁠Mango⁠でTwitteとLinkedInにも標準で対応することが決まっています。それらSNSに対して,簡単にユーザーがリンクを共有する機能を提供します。

private void btnShareLink_Click(object sender, RoutedEventArgs e)
{
    ShareLinkTask shareLinkTask = new ShareLinkTask();
    shareLinkTask.Title = "CH3COOH(酢酸)の実験室";
    shareLinkTask.LinkUri = new Uri("http://ch3cooh.jp/", UriKind.Absolute);
    shareLinkTask.Message = "ch3cooh.jpのウェブサイトみつけた!";
    shareLinkTask.Show();
}
Private Sub btnShareLink_Click(sender As Object, e As RoutedEventArgs)
    Dim shareLinkTask As New ShareLinkTask()
    shareLinkTask.Title = "CH3COOH(酢酸)の実験室" 
    shareLinkTask.LinkUri = New Uri("http://ch3cooh.jp/", UriKind.Absolute)
    shareLinkTask.Message = "ch3cooh.jpのウェブサイトみつけた!" 
    shareLinkTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。Titleプロパティで設定したテキストが大きく表示され,その下にLinkUriプロパティで設定したURLが表示されています。

画像

「Include a message」欄では,リンクに対するメッセージをあらかじめ設定しておくことができます。⁠Post to」欄から投稿したいサービスをチェックボックスで選択することができます。このリンクはWindows Liveでは共有したいが,Twitterでは共有したくないという場合に使えるのではないかと思います。

画像

アプリケーションバーに表示されているpostアイコンをタップすると,Windows LiveとFacebookに対してリンクの共有が行われます。Facebookでは以下のように「Windows Phoneから」の投稿として扱われるようです。

画像

ShareStatusTaskは,ユーザーのステータスをソーシャルネットワークサービス(以後,SNS)で共有することができます。ステータスを共有する場合には,ShareStatusTaskのほうを使うべきでしょう。

Statusプロパティにテキストを設定しておくと,あらかじめ起動される投稿画面にステータスが入力された状態で表示することができます。

private void btnShareStatus_Click(object sender, RoutedEventArgs e)
{
    ShareStatusTask shareStatusTask = new ShareStatusTask();
    shareStatusTask.Status = "Hello, world! こんにちは,世界!";
    shareStatusTask.Show();
}
Private Sub btnShareStatus_Click(sender As Object, e As RoutedEventArgs)
    Dim shareStatusTask As New ShareStatusTask()
    shareStatusTask.Status = "Hello, world! こんにちは、世界!" 
    shareStatusTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。ShareStatusTaskでも「Post to」欄があり投稿するSNSを変更することができます。

画像

アプリケーションバーに表示されているpostアイコンをタップすると,SNSに対してリンクの共有が行われます。Facebookでは以下のように「Windows Phoneから」の投稿として扱われます。

画像

さいごに

iPhoneやAndrodi問わずに,スマートフォンアプリケーションではTwitterやFacebookでのへの投稿は当然のように要件として含まれてきます。

店舗や施設などのナビゲーション系のアプリケーションであれば,施設の場所を標準の地図アプリケーションで表示したり,現在地から施設への道順を表示する機能を搭載できないかと問い合わせを頂きます。

iOSも5になりTwitter APIが標準APIとして搭載されることとなりましたが,Windows Phone 7 ⁠Mango⁠では,ソーシャルネットワークサービスでのコミュニケーション機能が非常に充実しています。今まで外部ライブラリが必要であった各SNSへの共有が標準APIで用意されているのは,開発者冥利に尽きます。

“イマドキ⁠のアプリケーションで求められる機能が標準APIとして搭載されており,Taskを使うだけで実装できるのは嬉しいですね。次回もWindows Phone ⁠Mango⁠での新機能についてご紹介させて頂きたいと思います。

以上で今回は終わりです。ありがとうございました。

著者プロフィール

和田健司(わだけんじ)

1982年10月12日生まれ。大阪で働くプログラマ。Microsoft MVP for Device Application Development(Jul 2010 - Jun 2011)。Windows Mobileに傾倒し今に至る。Windows Mobile向けのTipsを書いています。iPhoneアプリ開発を始めました。嫌いな食べ物はカレー。

URL: http://ch3cooh.jp/
Blog: http://d.hatena.ne.jp/ch3cooh393/