2013-03-25 5 views
12

目的:特定の日時にメッセージを表示するXamarinスタジオを使用してクロスプラットフォームのモバイルアプリを開発する。Xamarin:シンプルなクロスプラットフォームアラームアプリ

質問:

私はこのようなアプリケーションを開発する場合a)はどのようなものには、/プラットフォーム間で共有することができます。

b)TimerまたはAlarmManagerを使用する方が良いですか?

c)共有コアプロジェクト(ポータブルクラスライブラリ/プラットフォーム固有ライブラリ/プレーンC#プロジェクト)にはどのようなプロジェクトを作成する必要がありますか?

ありがとうございました。

答えて

16

a)は一般的には、あなたがそのプラットフォーム間で何かを共有することができますプラットフォーム固有ではありません。

インターフェイスで定義されたビューへの参照を保持するプレゼンターまたはメディエータを使用する傾向があります。たとえば、私がログインビューを持っていたら、私は自分のiOS UIViewControllerと私のAndroidアクティビティの両方にILoginViewインターフェイスを実装します。このインタフェースは、次のように定義しているでしょう:ユーザー名とパスワードのための

  • ゲッター
  • LoginSubmitted
  • 二ShowLoginFailed方法とGoNextScreen

プレゼンター/メディエータはを聴くための責任を負うことになるというイベントログインはサブミットされ、ユーザー名とパスワードが取得され、サービスコールやコマンドに渡されます。調停者がコマンド/サービスの結果を受け取ると、ShowLoginFailedまたはGoNextScreenのいずれかを起動する責任があります。

また、SQLite Manager(https://github.com/praeclarum/sqlite-net/tree/master/src)を定義するためのインターフェイス、または実際のWeb APIサービスコールの作成を担当する代理人も使用しました。私はSQLiteマネージャとRestSharpのためにプラットフォーム固有のコンパイルが必要であるため、これを行う必要があることがわかりました。

短いストーリーは、特にあなたが何らかのDependency Injectionシステムにそれらを結合するとき、インターフェイスがあなたの友人です。

b)デバイスがスリープモードに入っているとき、または別のアプリに入っているときにアラームを要求されるようにするには、Android用のAlarmManagerとiOS用のLocalNotificationを使用します。

c)Xamarin.AndroidとXamarin.iOSでPCLを使用できます。問題は、PCLが100%サポートされていないことです。 >「アップデートの確認 - 「Xamarinメーカー」:

Xamarin Studioのベータ版やアルファチャンネルに
  • スイッチ:しかし、あなたが望むうまくいけば、あなたを取得する必要がありますあなたのdevの環境にあなたが作ることができるいくつかの微調整があります" - >ダイアログボックスの左上にあるコンボボックスのチャンネルを変更します - >"アップデートの再起動とインストール "を選択します。これにより、AndroidとiOSの両方のプロジェクトで、同じソリューション内の同じPCLにリンクできるようになります。 PCLが適切にコンパイルして、あなたのモノを変更するには、この記事で説明しXS、近く​​にXSを更新し、フォローした後

  • インストール: MonoDevelop: is it possible to switch PCL's compiler?

  • があなたのPCLプロジェクト内のよりよいプレーするコードヒントを取得するには、必要がありますMonoからmscorlib.dllを取得し、プロジェクトディレクトリのDLLsフォルダに配置し、PCLプロジェクトに参照を追加します。あなたはここにDLLを見つけることができます。/Library/Frameworks/Mono.framework/Versions/3.0.10/lib/mono/4.0

あなたはそれのすべてをやった後、あなたが取得し、かなり良い形にする必要がありますあなたのPCLは動作します。私は、XSでユニットテストプロジェクトを作成してPCLにリンクし、IDE内からテストを実行できるという点で、これが余計な作業に値することがわかった。さらに、私はMoqのようなライブラリを使って私の意見を嘲笑し、統合テストを行うことができます。

Xamarinは、完全なPCLサポートが「すぐに」提供されることを約束しており、これらのハッキングを気にする必要はありません。

+0

探しを作成するので、今日これをやりたいと思っ誰もが間違いなく真のクロスプラットフォームコントロールのセットで、今年初めに出てきたXamarin.Formsをご覧くださいXamarinへ - 私はあなたの考え方が好きです。非常に役立ちます。 – YnotDraw

+0

素晴らしい情報投稿していただきありがとうございます。 – Stonetip

+0

すべてのプラットフォームで動作するアプリケーションを作成したい場合は、zamarinのみを選択します。 iOS、Android、Firefox OS – user3491862

1

始めるためにXamarinチームから、このガイドをチェックアウト: http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications

これはまた、一部のC. http://docs.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_4_-_platform_divergence_abstraction_divergent_implementation

であなたの質問に対処する第四部分、Xamarin Studioのダッシュボード/メインです右側のスクリーン(?)には2つのアプリケーションがあり、完全に動作し、2-3のプラットフォームをターゲットにしているので、プロジェクト間でコードを共有するときにアプリケーションの構造を見ることができます。

読んで練習するのに時間がかからないガイドとチュートリアルがサイト上にたくさんあります。

私は私の経験に基づいて、私の提案はどのようにここで最高のシェア、AndroidとiOSの間のコード週のこれらの過去のカップルとに焦点を当ててきた
2

今のところ、Xamarinはビジネスロジックを共有するのに役立ちます。つまりデータベース、Webサービス、またはあなたが取り組んでいるプラットフォームに依存しないようなコードが含まれています。あなたはC#でコード化します。したがって、あなたは基本的なC#機能にアクセスすることができます。言い換えれば、あなたが利用できるモノ固有の機能もあります。

結論として、私は要約することができます:あなたの仕事のバックエンドのための別のプロジェクトを作成することができ、UIとそのコードのための別のプロジェクトです。 (両者は明らかに同じ作業空間にいる)。その後、IOSアプリケーション、アンドロイドアプリ、そしてデフォルトでWP8アプリ(MacとWindowsアプリ)で、このコアのバックエンドプロジェクトの種類を使用することができます。 コアを除いて、UI、そのハンドラ、およびコードの背後にあるすべてのプラットフォームについて別々にコーディングするには、いくつかの努力を払う必要があります。

+1

XamarinはUI作成を抽象化し、同じコードベース(xamarin.com/forms)を使用してAndroid、iOS、WinPhoneのUIを作成できるXamarin.Formsを導入しました。したがって、プラットフォームごとにUIを書き換える必要はありません。 – HischT

+0

素晴らしい:)アップデートのおかげでHischT –

2

私はこれは古い記事です知っていますが、一つだけUI