前回はYouTubeのデータ取得をどのようにすれば良いのか?という事を纏めた記事を書きました。

今回は調べた結果に基づいて、Xamarin.FormsでYouTube Data APIとPlugin.YouTubeを使って実際にデータを取得出来るのかを検証してみます。

ダウンロード

かりまたかりまた

この記事で記述しているコードをGitHubにアップロードしたのでご自由にお使いください。

前回の記事

YouTubeからデータを取得してみる

かりまたかりまた

前回もリンクを貼りましたが、このサイトを参考にしています。

大まかな流れ

  1. Google API ConsoleでYouTube Data APIのAPIキーを取得
  2. Visual Studioで新しいXamarinのプロジェクトを作成
  3. Plugin.YouTubeをnugetから取得
  4. AndroidとiOSにModel・View・ViewModelにクラスファイルが追加されることを確認後、そのファイルをPCLに纏める
  5. デバッグ実行。晴れてデータ表示( ˇωˇ )

1.YouTube Data APIのAPIキーを取得

りんちゃんりんちゃん

最新の情報じゃにゃいが、以下のサイトを参考にしたのにゃ~。

2.新しいXamarinのプロジェクトを作成

りんちゃんりんちゃん

Xamarinのプロジェクトを作成するのにゃ~。ここではプロジェクト名をYouTubeDemoとするにゃ~。

3.Plugin.YouTubeをnugetから取得

りんちゃんりんちゃん

ソリューションを右クリック>ソリューションのNugetパッケージの管理をクリックするとNugetからライブラリをダウンロードできるのにゃ~。

りんちゃんりんちゃん

参照タブの検索バーにPlugin.YouTubeと入力すると以下の様になるにゃ~。インストールするにゃ~。

なんだとさんなんだとさん

なん…だと…。

エラー パッケージ ‘Microsoft.Bcl.Build 1.0.14’ をインストールできませんでした。このパッケージを ‘MonoAndroid,Version=v7.1’ を対象とするプロジェクトにインストールしようとしていますが、そのフレームワークと互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。詳細については、パッケージの作成者に問い合わせてください。

かりまたかりまた

Nugetからダウンロードしているのにライブラリのバージョンを合わせてくれない…だと…?

りんちゃんりんちゃん

とりあえずMicrosoft.Bcl.BuildNugetから取得するのにゃ~。

りんちゃんりんちゃん

Microsoft.Bcl.Buildの最新を取得してからPlugin.YouTubeを取得すれば上手くいくのにゃ~。

4.AndroidとiOSにModel・View・ViewModelにクラスファイルが追加されることを確認

りんちゃんりんちゃん

Plugin.YouTubeを取得すると自動的にModelViewViewModelが追加されるのにゃ~。

AndroidiOS

5.Model・View・ViewModelをPCLに纏める

りんちゃんりんちゃん

AndroidiOSにファイルが追加されたは良いが、どっちも同じ内容なのにゃ~。それならば、以下の様にPCLに纏めてしまうのにゃ~。

りんちゃんりんちゃん

Viewに関してはXamlを追加するのにゃ~。(レイアウトなのにクラスファイルにべた書きする意味がわからない)

かりまたかりまた

整形したXamlを書いておきますね。コピペでおk


りんちゃんりんちゃん

PCLにファイルを追加したらAndroidiOSからはファイルを削除しておくのにゃ~。

6.App.xaml.csをYouTubeViewPageに書き換える

りんちゃんりんちゃん

App.xaml.csのMainPagePCLに追加したYouTubeViewPageに書き換えるのにゃ~。

かりまたかりまた

AndroidのMainActivity.csiOSのAppDelegate.csも同様に、LoadApplicationメソッド内で生成するインスタンスをAppクラスにすればおk


7.デバッグ実行

りんちゃんりんちゃん

冒頭で取得したAPIViewModelに記述すると以下の様にデータが取れてくるのにゃ~。

AndroidiOS
 

うまく実行できない場合の対処法

かりまたかりまた

なんかうまく動かんなー?という時の対処法です。

HttpClientのインスタンスが生成出来ない場合
りんちゃんりんちゃん

System.Net.HttpNugetから取得するのにゃ~。

JsonConvert.DeserializeObjectメソッドが使用出来ない場合
りんちゃんりんちゃん

Microsoft.CSharpNugetから取得するのにゃ~。

Newtonsoft.Jsonのアセンブリ参照が出来ない場合
りんちゃんりんちゃん

Newtonsoft.Json (または、Json.net)をNugetから取得するのにゃ~。

まとめ

かりまたかりまた

冒頭でも載せましたが、今回の記事のコードは以下に纏めているのでどうぞ。