次にソリューションエクスプローラー内のFacebookInfoPage.xamlを展開して表示される、FacebookInfoPage.xaml.vbをダブルクリックしてリスト4のコードを記述します。
ロジックコードを記述する
リスト4 (FacebookInfoPage.xaml.vb)
MessageDialogを表示するのに必要なWindows.UI.Popups名前空間をインポートします。
1 | Imports Windows.UI.Popups |
3 | Public NotInheritable Class FacebookInfoPage |
ページがアクティブになった時の処理
FacebookLoginPage.xamlから送られた「投稿内容」を取得して、メンバ変数myTextに格納します。
モジュール内で宣言したPublic変数accessTokenで初期化された新しいFacebookClientのインスタンスを作成します。
AddHandlerメソッドでFacebookへのPOSTが完了した時に発生する、PostCompletedイベントにイベントハンドラを指定します。イベントハンドラ内では以下の処理を行います。
エラーが発生した場合には「アップロード失敗」のメッセージダイアログを表示します。
ブール型メンバ変数flagをFalseで初期化します。
それ以外はflagをTrueで初期化します。
キーと値のコレクションを表す、Dictionaryクラスのインスタンス、myParamオブジェクトを作成します。
myParamの”message”に投稿内容を格納しているメンバ変数myTextを指定します。
PostTaskAsyncメソッドで、パスに "/me/feed"、パラメーターにmyParamを指定して、Facebookサーバーに非同期処理のPOSTリクエストを送信します。
ブール型メンバ変数flagがTrueなら「TwitterとFacebookに投稿しました。」と表示します。
非同期処理で行われるため、メソッドの先頭にAsyncを追加します。Asyncが追加されていると、その処理が非同期で行われることを意味します。
01 | Protected Overrides Async Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) |
02 | myText = CStr(e.Parameter) |
03 | myFB = New FacebookClient(accessToken) |
04 | AddHandlermyFB.PostCompleted, Async Sub(mySender As Object, myArgs As FacebookApiEventArgs) |
05 | If myArgs.Error Is Nothing = False Then |
06 | Dim myDialog As MessageDialog = New MessageDialog("アップロード失敗") |
08 | Await myDialog.ShowAsync() |
14 | Dim myParam As New Dictionary(Of String, Object) |
15 | myParam("message") = myText |
16 | Await myFB.PostTaskAsync("/me/feed", myParam) |
19 | messageTextBlock.Text = "TwitterとFacebookに投稿しました。" |
21 | messageTextBlock.Text = "投稿失敗" |
サンプルの解像度について
今回の応用編では、筆者の解像度1920×1080で作成したサンプルが多かったのですが、この方法は好ましい方法ではありません。
1920×1080を指定して作成すると、Windows 8のハードウエア認定を受けることのできる1366×768の解像度では画面が途切れてしまいます。
そこで筆者は下記のコードを使用して解像度を取得し、画面の表示を変更しています。
1 | Dim myWidth = CInt(Window.Current.CoreWindow.Bounds.Width) |
2 | Dim myHeight = CInt(Window.Current.CoreWindow.Bounds.Height) |
3 | If myWidth = 1920 AndAlso myHeight = 1080 Then |
4 | ~解像度が1920×1080の場合の画面の表示処理~ |
5 | ElseIf myWidth = 1366 AndAlso myHeight = 768 Then |
6 | ~解像度が1366×768の場合の画面の表示処理 |
上記のコードによって解像度による画面の表示サイズの変更を行います。皆さんも一度お試しください。
今回で、応用編は終わりです。基本編と応用編合わせていろいろなサンプルを見てきましたが、いかがだったでしょうか。この連載が、皆様のWindows ストアアプリ挑戦への足がかりになっていただければ、筆者としてはうれしい限りです。是非、挑戦していただきたいと思います。どうも、ありがとうございました。
薬師寺国安