160 likes | 299 Vues
Discover Pocket Brewer, a comprehensive beer brewing assistant designed for the everyday homebrewer. While it doesn’t teach you how to brew beer, it provides essential tools for conversions, calculations, and recipe building using a common ingredient database. Easily import, export, and share your beer recipes with others. Developed by Wayne Odom, this app focuses on simplifying the homebrewing process while integrating supporting website functionalities for recipe sharing and user interaction. Get started on your brewing journey today!
E N D
Pocket Brewer On hand tools for the average homebrewer.
What’s This Presentation • Wayne Odom – I program. • Show and Tell • Code & things that I think are helpful • Marketplace & Submission Issues • Promotional & Advertising • Website Integration • Competition Issues • Probably 50% Correct at Best
What’s the app do? • Beer brewing assistant. • Does not teach you how to brew beer. • Conversions and Calculations. • Build Recipes using common database. • Import/Export/Share • Nothing Innovative. All done before.
How Project Went Started • Got bored one Friday in December. • Purchased Phone • Create.msdn.com • Install SDK • http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27570 • Silverlight toolkit for wrap panel, Combo box • silverlight.codeplex.com • Windows Phone Developer Tools • http://www.microsoft.com/download/en/details.aspx?id=13890 • File->New Project -> Pivot Application • Easy Enough So Kept Going (Unlike Droid)
Navigation • NavigationService object • Added NavPage to ItemViewModel • Embrace NavigationService.Back() • Icons (as content) • C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1 • Override OnNavigatedTo and OnNavigatedFrom • Query Strings
Query String Code if (NavigationContext.QueryString.ContainsKey("Source")) { string source = NavigationContext.QueryString["Source"].ToString(); NavigationService.Navigate(new Uri("/Page.xaml?Source=" + source, UriKind.Relative)); }
View Models & Item Templates • Google Windows Phone 7 MVVM • Started Writing View Models For Everything. • Tedious Tombstoning– Easier to store objects than text box values.
Data Storage • Pocket Brewer Data = collection of the most common ingredients in text files. • Storage is isolated storage • Serialization/Deserialization of Objects as XML • Tombstoning
Isolated Storage & Serialization Code using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { if (store.DirectoryExists(“dir/r")) { using (var stream = new IsolatedStorageFileStream(" dir/r /tombstonerecipeclass.txt", FileMode.OpenOrCreate, FileAccess.Read, store)) { using (var reader = new StreamReader(stream)) { varserializer = new XmlSerializer(typeof(RecipeClass)); return reader.EndOfStream ? new RecipeClass() : (RecipeClass)serializer.Deserialize(reader); } //end using } //end using } //end if } //end using
More Better SQL Available • September 23, 2011 • http://msdn.microsoft.com/en-us/library/hh202872(v=VS.92).aspx • http://msdn.microsoft.com/en-us/library/hh202860(v=VS.92).aspx • Local Database in Isolated Storage Now Available. $#!#
Supporting Website • Wordpress.org = Free Software • Wordpress.com = Sort of free but not really. • Beer Recipes Functionality • Feeds Recipe Import • Search Engine Traffic = Later Opportunities in Ad Sales (Adsense) • Google Analytics = Free • http://www.google.com/analytics/ • User Interaction – BeerXML, Timers • Godaddy < $5 Hosting/Month Hosting. $12 Domain. cpwebhosting.com ($1.50 month)
BeerXML & Shared Recipes • Not a service. • Imports From The Web Browser Control • Shared via email, website, other websites. • http://Pocketbrewer.com/recipes/ • http://www.brew-monkey.com/recipes/recipes.php • http://www.homebrewtalk.com/f62/black-widow-kolsch-224791/ • http://www.beerxml.com/
Using Web Browser private void WebsiteSelect_SelectionChanged(object sender, SelectionChangedEventArgs e) { UriDisplayClass target = WebsiteSelect.SelectedItem as UriDisplayClass; webBrowserImport.Source= target.UriTarget; } private string _webBrowserContent; private void webBrowserImport_LoadCompleted(object sender, NavigationEventArgse) { PageTitle.Text = "Recipe Import"; _webBrowserContent = webBrowserImport.SaveToString(); }
Marketplace Submission • Denied due to Navigation • Denied due to forgetting About Page • Final Publish to Marketplace Delay. Support for help after two weeks.
Free Competition vs Paid App • First to market = 30 downloads/monthly • First Free App = 15 downloads/monthly • Second Free App = < 10 downloads/monthly • Going Trial? Limit import/export to 1. • Silver Line: Sales better since Mango.
Thanks! • http://www.wayneodom.com/ • http://www.pocketbrewer.com/ • wayne@wayneodom.com