くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Visual Studio 15.4 (2017) で Xamarin を選択したときに Android エミュレーターのチェックを外せれなくなっています。ストレージ容量の少ない方はご注意ください。

Visual Studio 15.4 とは、 Visual Studio 2017 の マイナーバージョン4 みたいなやつです。

Visual Studio の新バージョンが出てくるたびになんだかんだ言って再インストールしている くぅ です。

私のPCは 256GB しか積んでいないので(新しいパソコンほしぃ...) Xamarin な環境を セットアップするときは Android エミュレーターをインストールしないようにし、容量を節約して使っていました

下記の記事にあるように皆さんもそうしているようです。

qiita.com

現在の状況

いつも通り Google Android エミュレーター のチェックを外そうとしていました。

https://lh3.googleusercontent.com/-vdlwzSm0rh8/WfbAWY0bQZI/AAAAAAAANxM/Zkw5FeJOeWYxu9NNvLuQs6TbmOS2s_C-gCHMYCw/s0/vs_installershell_2017-10-30_15-02-02.png

外せれない...

対策

現状できる対策は以下ぐらいかなと思います。

  • Xamarin のよしなな場所にフィードバックを送る
  • ストレージ容量の大きなPCを買う

フィードバックですが、 Xamarin 公式 Forum の 15.4 のスレッドをちらっと見た感じでは問題にされてないっぽい....?

Current Release: 15.4 Feature Release — Xamarin Community Forums

追記

.NET によるモバイル開発 で一括で入れなくても、個別に必要なコンポーネントを選択していけばいけるという情報をいただきました。 実際にやってみてその方法で行けました!情報ありがとうございます!

Xamarin.Android で Wifi との接続状況を取得する(シンプル Ver と 詳細 Ver)

Xamarin.Android で Wifi との接続状況を取得してあれこれしたいって場面があると思います。(Wifi と確実に接続してから通信をしなければいけない状況など....

Android では幾つかの方法を利用することで Android 端末の Wifi との接続状況を取得することができます。

今回は、2種類の詳しさで WIfi との接続情報を取得する方法について書いていきます。(必要以上に詳しい情報が必要な場面とそうでない場面とであるからね!

シンプル Ver

得られる結果は以下のページにリストアップされています。

https://developer.xamarin.com/api/type/Android.Net.NetworkInfo+State/

https://lh3.googleusercontent.com/-nDJsY58Vplk/WfaZ3lNtXZI/AAAAAAAANws/ZE_KAxiXWvEr1lsp1iqwJQMMt0h0Xw1PACHMYCw/s0/chrome_2017-10-30_12-17-52.png

// Connectivity Mange を取得するプロパティを適当に生やす
private ConnectivityManager ConnectivityManager => (ConnectivityManager)GetSystemService(ConnectivityService);
// 接続状況を表示するための Label を取得
var SimpleLabel = FindViewById<TextView>(Resource.Id.SimpleNetworkLabel);
// アクティブになっているネットワークを取得
var SimpleWifiState = ConnectivityManager.ActiveNetworkInfo;
// 今回は、 Wifi 以外の場合は興味ないので返しておく
if (SimpleWifiState.Type != ConnectivityType.Wifi) return;
// 結果を見やすくするためにテキスト化して表示
SimpleLabel.Text = SimpleWifiState.GetState().ToString();

詳細 Ver

得られる結果は以下のページにリストアップされています。

SupplicantState Class (Android.Net.Wifi) | Microsoft Docs

https://lh3.googleusercontent.com/-v3yHoiXx10U/WfaZmCPdbgI/AAAAAAAANwo/A914yTAiYykiFIQZpjhGBQSBMo8dVHJIgCHMYCw/s0/chrome_2017-10-30_12-16-41.png

// WifiManger を利用して取得
private WifiManager WifiManager => (WifiManager)GetSystemService(WifiService);
// 接続状況を表示するための Label を取得
var detailLabel = FindViewById<TextView>(Resource.Id.DetailNetWorkStateLabel);
// 結果を見やすくするためにテキスト化して表示
detailLabel.Text = WifiManager.ConnectionInfo.SupplicantState.Name();

Xamarin.Android で Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: You must supply a layout_width attribute. というエラーが出る

Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: You must supply a layout_width attribute.

というエラーが Xamarin.Android なアプリを作成していて出ました。

原因

layout_width を付与し忘れていたのが原因でした。 手書きで axml を書いていて書き忘れてしまった....

Microsoft MVP アプリのテストを手伝ってくれるMicrosoft MVP を募集してるよー!ってお話。

主に、Microsoft MVP 向けな記事です。

Microsoft MVP 向けに Microsoft MVP アプリが存在します。

Microsoft MVP Award

Microsoft MVP Award

しかし、 現在は Android 向けアプリはリリースされていない状況です。 そこで、 Android バージョンのテスターを募集しているらしいです。

以下のツイートは Microsoft で Xamarin を担当している開発者さんのツイートです。 この方に メアドと Microsoft Number (受賞時に送られてきたメールについてる数字) をDMで送ると招待されます。(正確には、 アプリへのリンクが送られてきます。)

Xamarin Live Player on iOS で Visualization Error が発生する

手元の端末で気軽に Xamarin.Forms 製アプリのプレビューを見ることができる Xamarin Live Player 、便利ですよね。

Xamarin.Forms で作成したアプリを iOS 端末でプレビューしようとしたら、エラーが発生してしまいプレビューできなかったのでその解決方法を書きます。

エラー画面

f:id:kuxumarin:20171011021412p:plain

56259 – Xamarin Live Player - IOS - Visualization Error - Exception of type 'Foundation.ModelNotImplementedException' was thrown

解決方法

雑に動かしたければ、 Xamarin.Forms のプロジェクト作成画面で SharedProject で作成すればおkみたいです。 PCL 対応版は次のリリースだそうです。 ごにょればPCLでも使えれるっぽいですが、リリースを待ったほうがよさげですね。

あ、 Mac が無くても iOS アプリを開発できるみたいな文脈で Xamarin Live Player が紹介されることがありますが原因の切り分けのために Mac がないと現実問題つらくないですか?

Xamarin.iOS で SF Safari View Controller を使う

使った理由

Web View よりも ユーザーの体験をよくできるかと思い 標準の WebView ではなく、 SF Safari View Controlelr を導入しました。

SF Safari view controller について

この記事にたどり着いている方は、すでに知っているかもしれませんが。。。

mushikago.com

実行例

ログインしなくても、最初からTwitter のユーザー画面が表示されているのがわかるかと思います。 (つまり、Safari と ログイン情報が共有されている)

youtu.be

コード

var url = "https://twitter.com/fumiya_kume";
var safariViewController = new SFSafariViewController(new NSUrl(url));
PresentViewController(safariViewController,true,() => {});

JXUGのリンク集へMS戸倉さんのXamarin,Azureハンズオンを追加しました。

日本Microsoft の戸倉さん のGithub リポジトリにある Xamarin, Azure ハンズオンがすごすぎるのでみんなに見てもらいたい!ということで、 JXUG.org のウェブサイトに追加しました。

JXUG のウェブサイトでは、 Xamarin に関するURLをまとめたサイトがあります。その中に、Xamarin のハンズオンをまとめた部分もあります。

JXUG : 関連ページ一覧

また、JXUG (Japan Xamarin User Group) のウェブサイトである JXUG,org は Github にウェブサイトのソースコードを置いて管理しています。

ということで、 JXUG の Github リポジトリに PR を出してみました。

github.com

すると

さすが、田淵さん!!!

ということで

是非見てください!

JXUG : 関連ページ一覧

https://lh3.googleusercontent.com/-AXdplZet_Rk/WWSIOqMXIpI/AAAAAAAAK3I/jq2oT_2SoXEPlPxgYRuz7N0IKLX9qs5twCHMYCw/s0/chrome_2017-07-11_17-11-36.png

ツイキャス の OAuth 認証をヘルプするライブラリの V0.1 を Github に公開しました

TwitCasting の API を使うために必要な OAuth 認証を手助けするライブラリを作成しました。

Xamarin, NETFX, ASP.net などから 利用できるように作りました。

動作環境

  • .Net Standard 1.0

機能

現在は、以下の機能が実装されています。個人的に必要最小限が実装されてる感じです。

  • OAuth URL 認証用の URL を生成
  • 認証でリダイレクトされたURLから Access Key を抜き出す

新機能

こんな機能欲しい、とかは、 PR, Issue 送ってください。

github.com

使用例

Auth するためのURLを取得

AuthClient authClient = new AuthClient();
AuthURL.Value = authClient.GetAuthURL(ClientID.Value);

Auth した後のURLから Access Key を取得

AuthClient authClient = new AuthClient();
var AccessKey = authClient.GetAccessTokenFromCallbackURL(AuthURL.Value);

Xamarin 勉強会を Xamarin 公式サイトに掲載してほしいって投稿した

こんにちは、くぅです。

Xamarin 勉強会を 08/19 に名古屋で主催します。ということで、 Xamarin 公式サイトに乗せてもらいたくて、 Post してみました。

イベントページ

jxug.connpass.com

きっかけ

www.xamarin.com

に乗せてもらいたいなと思って、 Xamarin の公式Twitter アカウントにリプを飛ばしてみました。

すると、 Xamarin の中のひとから返信がありました。

ということで、フォーラムに投稿しました。

実際に掲載してもらえるかは微妙ですが、掲載されたらうれしい!