1 / 20

WP7PUBLISH: best practices for developing content apps

WP7PUBLISH: best practices for developing content apps. OLEKSANDR KRAKOVETSKYI CEO , DevRain Solutions , @ msugvnua. DevRain Solutions. 30+ apps for Windows Phone 5 apps for Windows 8 Best Windows Phone 8 solutions provider in 2012 Windows Phone Next App Star contest finalist

Download Presentation

WP7PUBLISH: best practices for developing content apps

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WP7PUBLISH: best practices for developing content apps OLEKSANDR KRAKOVETSKYI CEO, DevRainSolutions, @msugvnua

  2. DevRain Solutions • 30+ apps for Windows Phone • 5 apps for Windows 8 • Best Windows Phone 8 solutions provider in 2012 • Windows Phone Next App Star contest finalist • 2.5 mlndownloads(April, 2013) • WP7PUBLISH – content platform for Windows Phone and Windows 8 is shortlisted in Ukrainian Startup Contest

  3. Digital vs. physical

  4. Authentically digital

  5. Authentically digital • Cloud Connected • In Motion • Typography • Action http://pinterest.com/chsneo/ui-authentically-digital/

  6. Content, not chrome

  7. Just call…

  8. RSS reader can be written by student this eveningYou may find a lot of such apps in the market!But you can’t use them…

  9. WP7PUBLISH is engine for creating content apps

  10. Features • Working with RSS, Twitter, YouTube feeds (from the box), custom APIs • Native controls, no web browser (HtmlTextBox) • Feeds • Offline work • Localization, branding • Settings • Opa, Metro style! • Real MVVM, optimization best practices • Ads integration

  11. Problems • RSS can be broken, encoding can be wrong or unknown, HTML can be unsupportable (iframe) • Source can be down • Url can be redirected (bash.org.ru -> bash.im) • Native, not web browser • Control size limitation (not more than 2048 px) • Localization • Feeds management • Exception handling • Migration to new versions

  12. Size limitation <Grid x:Name="ContentPanel"Grid.Row="1" Margin="12,0,12,0"><ScrollViewer><TextBlock x:Name="textBlock" TextWrapping="Wrap" /></ScrollViewer> </Grid> privatevoidParseText(string value)    {if (this.stackPanel == null)         {return;         }// Clear previous TextBlocksthis.stackPanel.Children.Clear();// Calculate max char countintmaxTexCount = this.GetMaxTextSize();if (value.Length < maxTexCount)         {TextBlocktextBlock = this.GetTextBlock();textBlock.Text = value;this.stackPanel.Children.Add(textBlock);         }else         {int n = value.Length / maxTexCount;int start = 0;// Add textblocksfor (inti = 0; i < n; i++)             {                    TextBlocktextBlock = this.GetTextBlock();textBlock.Text = value.Substring(start, maxTexCount);this.stackPanel.Children.Add(textBlock);                 start = maxTexCount;             }// Pickup the leftover textif (value.Length % maxTexCount > 0)             {TextBlocktextBlock = this.GetTextBlock();textBlock.Text = value.Substring(maxTexCount * n, value.Length - maxTexCount * n);this.stackPanel.Children.Add(textBlock);                                }         }     }

  13. RichTextBox privatevoidbtnSetXaml_Click(objectsender, RoutedEventArgs e) {     // NOTE: the paragraphs with the actual content are     // wrapped in a section that defines the namespace so that the elements can be resolved     stringxaml =         @"<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">             <Paragraph>                 <Underline Foreground=""LightBlue"">Some Underline Text Here!</Underline>             </Paragraph>             <Paragraph Foreground=""Red"">                 <Bold>Some Bold Text Here!</Bold>             </Paragraph>         </Section>"; this.richTextBox.Xaml = xaml; }

  14. HtmlTextBlock • HTML parsing (HtmlAgilityPack) • XAML parsing (working with nodes tree) • Detecting size in runtime based on certain text, settings etc. • Exceptions handling • Preprocessors (high level and feed-based)

  15. WP7PUBLISH 2.0 • No navigation buttons (just gestures) • Content, not chrome • Animations between pages • One hand reading • Good performance

  16. Sync (offline) • Offline is not just caching but sync • Testing is difficult • Multithreading (with all future issues)

  17. QA Alex.Krakovetskiy@devrain.com http://devrain.com @msugvnua

More Related