Windows 8

Helper class to easily display local toast notifications (Windows Universal app)

Often , we need to display a confirmation that some action in our app has been finished (like some data has been updated etc.). There are several ways of doing this, like displaying a MessageBox or MessageDialog. This however breaks the user interaction, and a lot of users will start complaining on that if your app keeps doing so. There needs to be a better way.

With the Coding4fun Toolkit floating around, you can mimic a toast notification – sadly only on Windows Phone (at least for the moment, but Dave told me he will work on implementing it for Windows, too). Also, Toastinet library is floating around, which is also able to mimic the toast notification behavior (although for Windows Universal app, the implementation is not that intuitive as for Windows  Phone). Both are fantastic libraries that I used in the past, but I wanted a solution that is implemented easily and works with my Universal app. So I did some searching in the Web and the MSDN docs, and found out that is pretty easy to use the system toast notifications on both platforms locally.

There are 8 possible ways to format toast notifications (as you can see here in the toast template catalog). This gives us pretty much options on how a notification can be styled. However, most options just work on Windows 8.1, while Windows Phone 8.1 apps will only show the notification in the way “app logo”  “bold text”  “normal text”. However, the notification system takes care of that, so you can specify some other type on Windows 8.1, while knowing that it gets converted on Windows Phone automatically. This allows us to write a helper class that implements all possible options without any headache.

the code parts for the notification

Let’s have a look at the code parts for the notification. First, you need to add two Namespaces to the class:

using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;

After that, we can start writing our code. Toast notifications are formatted using Xml. Because of this, we need to get a reference to the underlying Xml template for the system toast notification:

ToastTemplateType xmlForToast= ToastTemplateType.ToastImageAndText01; 
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(xmlForToast);

System toast notifications can hold Text (and an Image on Windows 8.1). So we need to declare the elements of the toast notification. We are using the Xml methods of the DOM namespace to get the text elements of the chosen template first:

XmlNodeList toastTextElements = xmlForToast.GetElementsByTagName("text");
toastTextElements[0].AppendChild(xmlForToast.CreateTextNode("text1"));
//additional texts, depending on the template:
//toastTextElements[1].AppendChild(xmlForToast.CreateTextNode("text2"));
//toastTextElements[2].AppendChild(xmlForToast.CreateTextNode("text3"));

This is how the image element is implemented:

XmlNodeList toastImageElement = xmlForToast.GetElementsByTagName("image");
//setting the image source uri:
if (toastImageElement != null) ((XmlElement) toastImageElement[0]).SetAttribute("src", imageSourceUri);
//setting optional alternative text for the image
if (toastImageElement != null)  ((XmlElement) toastImageElement[0]).SetAttribute("alt", imageSourceAlternativeText);

You can attach local or remote images to the toast notification, but remember this works only on Windows, not on Windows Phone.

The next part we are able to set is the duration. The duration options are long (25 seconds) and short (7 seconds). The default is short, which should be ok for most scenarios. Microsoft recommends to use long only when a personal interaction of the user is needed (like in a chat). This is how we do it:

IXmlNode toastRoot = xmlForToast.SelectSingleNode("/toast");
((XmlElement) toastRoot).SetAttribute("duration", "short");

What we are doing here is to get the root element of the template’s Xml and add a new element for the duration. Now that we finally have set all options, we are able to create our toast notification and display it to the user:

ToastNotification notification = new ToastNotification(xmlForToast);
ToastNotificationManager.CreateToastNotifier().Show(notification);

the helper class

That’s all we need to do for our local notification. You might see that always rewriting the same code just makes a lot of work. Because the code for the toast notification can be called nearly everywhere in an app (it does not matter if you are calling it from a ViewModel or code behind), I wrote this helper class that makes it even more easy to use the system toast notification locally:

    public class LocalToastHelper
    {
        public void ShowLocalToast(ToastTemplateType templateType, string toastText01, string toastText02 = null, string toastText03 = null, string imageSourceUri = null, string imageSourceAlternativeText = null, ToastDuration duration = ToastDuration.Short)
        {
            XmlDocument xmlForToast = ToastNotificationManager.GetTemplateContent(templateType);
            XmlNodeList toastTextElements = xmlForToast.GetElementsByTagName("text");

            switch (templateType)
            {
                case ToastTemplateType.ToastText01:
                case ToastTemplateType.ToastImageAndText01:
                    toastTextElements[0].AppendChild(xmlForToast.CreateTextNode(toastText01));
                    break;
                case ToastTemplateType.ToastText02:
                case ToastTemplateType.ToastImageAndText02:
                    toastTextElements[0].AppendChild(xmlForToast.CreateTextNode(toastText01));
                    if (toastText02 != null)
                    {
                        toastTextElements[1].AppendChild(xmlForToast.CreateTextNode(toastText02));
                    }
                    else
                    {
                        throw new ArgumentNullException("toastText02 must not be null when using this template type");
                        
                    }
                    ;
                    break;
                case ToastTemplateType.ToastText03:
                case ToastTemplateType.ToastImageAndText03:
                    toastTextElements[0].AppendChild(xmlForToast.CreateTextNode(toastText01));
                    if (toastText02 != null)
                    {
                        toastTextElements[1].AppendChild(xmlForToast.CreateTextNode(toastText02));
                    }
                    else
                    {
                        throw new ArgumentNullException("toastText02 must not be null when using this template type");
                    }
                    ;
                    break;
                case ToastTemplateType.ToastText04:
                case ToastTemplateType.ToastImageAndText04:
                    toastTextElements[0].AppendChild(xmlForToast.CreateTextNode(toastText01));
                    if (toastText02 != null)
                    {
                        toastTextElements[1].AppendChild(xmlForToast.CreateTextNode(toastText02));
                    }
                    else
                    {
                        throw new ArgumentNullException("toastText02 must not be null when using this template type");
                    }
                    ;
                    if (toastText03 != null)
                    {
                        toastTextElements[2].AppendChild(xmlForToast.CreateTextNode(toastText03));
                    }
                    else
                    {
                        throw new ArgumentNullException("toastText03 must not be null when using this template type");
                    }
                    ;
                    break;
            }

            switch (templateType)
            {
                case ToastTemplateType.ToastImageAndText01:
                case ToastTemplateType.ToastImageAndText02:
                case ToastTemplateType.ToastImageAndText03:
                case ToastTemplateType.ToastImageAndText04:
                    if (!string.IsNullOrEmpty(imageSourceUri))
                    {
                        XmlNodeList toastImageElement = xmlForToast.GetElementsByTagName("image");
                        if (toastImageElement != null)
                            ((XmlElement) toastImageElement[0]).SetAttribute("src", imageSourceUri);
                    }
                    else
                    {
                        throw new ArgumentNullException(
                            "imageSourceUri must not be null when using this template type");
                    }
                    if (!string.IsNullOrEmpty(imageSourceUri) && !string.IsNullOrEmpty(imageSourceAlternativeText))
                    {
                        XmlNodeList toastImageElement = xmlForToast.GetElementsByTagName("image");
                        if (toastImageElement != null)
                            ((XmlElement) toastImageElement[0]).SetAttribute("alt", imageSourceAlternativeText);
                    }
                    break;
                default:
                    break;
            }

            IXmlNode toastRoot = xmlForToast.SelectSingleNode("/toast");
            ((XmlElement) toastRoot).SetAttribute("duration", duration.ToString().ToLowerInvariant());

            ToastNotification notification = new ToastNotification(xmlForToast);
            ToastNotificationManager.CreateToastNotifier().Show(notification);
        }

        public enum ToastDuration
        {
            Short,
            Long
        }
    }

As you can see, you just need to provide the wanted parameters to the ShowLocalToast method, which will do the rest of the work for you.

One word to the second switch statement I am using. The image element needs to be set only when we are using the ToastImageAndTextXX templates. There are three ways to implement the integration: using an if with 4  “or” options, the switch statement I am using or a string comparison with String.Contains. The switch statement is the cleanest option for me, so I decided to go this way. Feel free to use any of the other ways in your implementation.

In my implementation, I added also some possible ArgumentNullExceptions to make it easy to find any usage errors.

For your convenience, I attached the source file. Just swap out the namespace with yours. Download

The usage of the class is pretty simple:

var _toastHelper = new LocalToastHelper();
_toastHelper.ShowLocalToast(ToastTemplateType.ToastText02, "This is text 1", "This is text 2");

audio options

The system toasts have another option that can be set: the toast audio. This way, you can customize the appearance of the toast a bit more. I did not implement it yet, because there are some more options and things to remind, and I haven’t checked them out all together. Once I did, I will add a second post to this one with the new information.

As always, I hope this is helpful for some of you.

Happy coding!

Posted by msicc in Dev Stories, win8dev, wpdev, 3 comments

Review of a geek’s 2014

We are close to the end of this year 2014, time for a little review.

At the beginning of the year, I was mostly busy with working on my UserVoice library that makes it easier for me and other developers to integrate UserVoice into Windows Phone apps. I also launched Voices Admin, the companion app for the library. I will start to rewrite this library in 2015 to make it a true Universal library for Windows, Windows Phone as well as Xamarin (and make it return objects instead of naked JSON strings).

I also had some troubles with my former hoster, which lead to a total domain chaos and finally ended in January, too. Thanks to Azure Websites, the transition should have been without problems.  At Telefónica, I was busy finishing the internal App “Friends & You” for Android and Windows Phone. I learned a lot using Xamarin for the Android version, and even more about corporate rules and requirements. In the beginning of December, I also finished the iOS variant of the app (using Xamarin.Forms) – which is sadly set to be not launched for the moment (mostly because of my departing of Telefónica).

During the year, we also received the Windows Phone 8.1 Developer Preview. It removed the ability to cross post on social networks on Windows Phone. As this was one of my most used features, I decided to solve this problem for myself and started to write my own cross posting solution. As some of my followers recognized this, I continued my efforts to a more public and polished version, the result is UniShare for Windows Phone.

ae4dc8ca-2d86-4e36-bf9b-d7c2985a68b1

Since the first WP8.1 Developer Preview, we also have Cortana. Cortana is an awesome piece of software – if you are willing to use your phone with English and US region settings. I tried the UK version as well as the Italian and German version, but was only satisfied with the US one. I truly hope that the other countries will be on par in 2015.

I also updated my very first app ever (Fishing Knots +) to a Windows Phone 8 only version, leaving the old version for WP7 users. Also my NFC Toolkit received some love (and will receive even more in 2015). On top, I started to work on a Universal library for WordPress, which I will also continue to work on in 2015 to make it even better.

One of my saddest geek moments was when the screen of my Intel developer Ultrabook broke shorty before Christmas. As I need to be able working while on the go, I needed a replacement. I found it in the ASUS TP300L Transformer Flipbook, which is an awesome piece of an Ultrabook. On top, Santa (aka my wife) gifted me an HP Stream 7 tablet, that perfectly fits my needs for a tablet use (reading, surfing, playing some games). And so this part also turned well.

The most significant thing happened in September, when I read about a job as a C# Junior developer in Switzerland. I am truly happy about the fact I got this job (read more on it here), and already learned some new things in WPF. Currently, I am also working on my first WPF application, that is a practicing project for my new job I am going to start next year. Which leads me to the end of this short review.

2014 was a year with ups and downs like every year. I had some trouble in “first world” that we were able to solve as family (and friends), but made some good success in my geek and dev world. I am looking forward to 2015, where I am starting a new chapter in my dev story (with becoming a full time developer). But there are also some nice side projects, like maybe porting some apps to Android as well as the Internet of Things, which I am looking forward to dive in deeper. And of course, like any other MS fan, I am looking forward to the next evolutions of Windows 10!

What are you all looking for? How was your 2014? Feel free to comment below.

158340786

Happy New Year, everyone!

Posted by msicc in Dev Stories, User Stories, 1 comment

WordPressUniversal – a PCL library for WordPress based C# mobile apps

WP_CSharp_Lib

As I have already developed a news reader app for my blog, I got asked quite a few times if I want to share my code to help others creating their apps. As I need to redesign my blog reader to match the latest OS features of Windows and Windows Phone, I decided to create my WordPressUniversal library.

Automattic, the company behind WordPress, integrated a powerful JSON API into their JetPack plugin. My library is based on this API. Please make sure the JSON API is active on the blog you are developing your app for.

The library currently provides the following features:

  • getting a list posts or pages
  • getting a list of all categories
  • getting a list of comments for the site and single posts
  • supports Windows Phone 8 & 8.1 Silverlight, Windows Phone 8.1 RT, Windows 8, Xamarin.iOS and Xamarin.Android

The library deserializes all data into C# objects you can immediately work with.

It is still a work in progress, but as it provides already a bunch of options to get you started, I am making this public already.

I am constantly working on the library, so be sure to follow the project along.

Note: JetPack’s JSON API does not support guest commenting at the moment. I already reached out to Automattic to (hopefully) find a solution for this. If you cannot wait, Disqus has a portable solution for Windows Phone apps.

Please make sure to see the documentation on my GitHub page.

If you have any questions, idea, wishes for me, just post a comment here or ping on Twitter.

Happy coding everyone!

Posted by msicc in Dev Stories, win8dev, wpdev, Xamarin, 17 comments

Book review: Learning Windows Azure Mobile Services for Windows 8 and Windows Phone 8 (Geoff Webber-Cross)

During the last months, I used the few times of my spare time when I wasn’t in the mood for programming to read Geoff’s latest book for diving deeper into Azure Mobile Services. Geoff is well known in the community for his Azure experience, and I absolutely recommend to follow him! I am really glad he asked me to review his book and need to apologize that it took so long to get this review up.

The book itself is very well structured with a true working XAML based game that utilizes both Windows 8 and Windows Phone 8 and connects them to one single Mobile Service.

Even if you are completely new to Azure, you will quickly get things done as the whole book is full of step-by-step instructions. Let’s have a quick look on what you will learn while reading this book:

  1. Prepare your Azure account and set up your first Mobile Service
  2. Bring your Mobile Service to life and connect Visual Studio
  3. Securing user’s data
  4. Create your own API endpoints
  5. use Git via the console for remote development
  6. manage Push Notifications for both Windows and Windows Phone apps
  7. use the advantages of the Notification hub
  8. Best practices for app development – some very useful general guilty tips!

I already use a Mobile Service with my Windows Phone App TweeCoMinder. I have already started a Windows 8 version of that app, which basically only needs to be connected to my existing Azure Mobile Service to finish it.

Screenshot (359)

While reading Geoff’s book, I learned how I effectively can achieve this and also improve my code for handling the push notifications on both systems. The book is an absolutely worthy investment if you look into Azure and Mobile Services and has a lot of sample code that can be reused in your own application.

As this is my first book review ever, feel free to leave your feedback in the comments.

You can buy the book right here.

Happy coding, everyone!

Posted by msicc in Azure, Dev Stories, win8dev, wpdev, 0 comments

How to search the Windows Phone Store within your app

MPSearch

I am currently working on my NFC app, and I want to make it easier for the end user to search for the AppId which you need for the LaunchApp record. So I thought about a possible solution for this, and of course the easiest way is to search the app.

If you only want to search the Windows Phone Store and let show some search results, there is the MarketplaceSearchTask, which you can call as a launcher. The only problem is, you cannot get any values into your app this way. But I found a way to get the results into my app. This post is about how I did it.

The first thing you will need to add to your project is the HTMLAgilitypack. It helps you parsing links from an HTML-based document. Huge thanks to @AWSOMEDEVSIGNER (follow him!), who helped me to get started with it and understand XPath. Xpath is also important for the HAP to work with Windows Phone. You will need to reference to System.Xml.Xpath.dll, which you will find in

%ProgramFiles(x86)%Microsoft SDKsMicrosoft SDKsSilverlightv4.0LibrariesClient or
%ProgramFiles%Microsoft SDKsMicrosoft SDKsSilverlightv4.0LibrariesClient

Ok, if we have this, we can continue in creating the search. Add a TextBox, a Button and a ListBox to your XAML:

            <Grid.RowDefinitions>
                <RowDefinition Height="90"></RowDefinition>
                <RowDefinition Height="90"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <TextBox x:Name="MPsearchTerm" Height="80" Grid.Row="0"></TextBox>
            <Button x:Name="searchButton" Height="80" Grid.Row="1" Content="search" Click="searchButton_Click_1"></Button>
            <ListBox Grid.Row="2" x:Name="ResultListBox">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding AppLogo}" 
                                   Height="50" 
                                   Width="50" 
                                   Margin="10,0,0,0">
                            </Image>
                            <TextBlock Text="{Binding AppName}"
                                       FontSize="32"
                                       Margin="12,0,0,0" >
                            </TextBlock>

                        </StackPanel>

                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

After creating this, we will hook up the Click-Event of our Button to create our search. We are going to use the search of windowsphone.com to get all the information we want. You can parse any information that you need like ratings etc., but we focus on AppId, Name of the App and of course the store Logo of each app.

First, we need to create the search Uri. The Uri is country dependent like your phone. This is how we create the Uri:

string currentLanguage = CultureInfo.CurrentCulture.Name;
string searchUri = string.Format("http://www.windowsphone.com/{0}/store/search?q={1}", currentLanguage, MPsearchTerm.Text);

After that, we are using a WebClient to get the HTML-String of  the search. I used the WebClient as I want to make it usable on WP7.x and WP8.

//start WebClient (this way it will work on WP7 & WP8)
WebClient MyMPSearch = new WebClient();
 //Add this header to asure that new results will be downloaded, also if the search term has not changed
// otherwise it would not load again the result string (because of WP cashing)
MyMPSearch.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.Now.ToString();
//Download the String and add new EventHandler once the Download has completed
 MyMPSearch.DownloadStringCompleted += new DownloadStringCompletedEventHandler(MyMPSearch_DownloadStringCompleted);
MyMPSearch.DownloadStringAsync(new Uri(searchUri));

In our DownloadStringCompletedEvent we now are parsing the HTML-String. First thing we need to do is to create a HTML-Document that loads our string:

//HAP needs a HTML-Document as it is based on Linq/Xpath
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(e.Result);

The next step is a bit tricky if you do not know Xpath. You need to got through all the HTML elements to find the one that holds the data you want to parse. In our case it is the class called “medium” within the result table “appList”.

var nodeList = doc.DocumentNode.SelectNodes("//table[@class='appList']/tbody/tr/td[@class='medium']/a");

Note that you have to use ‘ instead of ” for the class names in Xpath. I recommend to open a sample search page in an internet browser and look into the code view of the page to find the right path.

image

Now that we have a NodeList, we can parse the data we want:

foreach(var node in nodeList)
            {
                //get AppId from Attributes
                cutAppID = node.Attributes["data-ov"].Value.Substring(5, 36);

                //get ImageUri for Image Source 
                var ImageMatch = Regex.Match(node.OuterHtml, "src");
                cutAppLogo = node.OuterHtml.Substring(ImageMatch.Index + 5, 92);

                // get AppTitle from node
                //Beginning of the AppTitle String
                var AppTitleMatch = Regex.Match(node.InnerHtml, "alt=");
                var StringToCut = Regex.Replace(node.InnerHtml.Substring(AppTitleMatch.Index),"alt="",string.Empty);
                //End of the AppTitle String
                var searchForApptitleEnd = Regex.Match(StringToCut, "">");
                //FinalAppName - cutting away the rest of the Html String at index of searchForApptitelEnd
                // if we won't do that, it would not display the name correctly
                cutAppName = StringToCut.Remove(searchForApptitleEnd.Index);
           }

As you can see, we need to perform some String operations, but this is the easiest way I got the result I want – within my app. As always I hope this will be helpful for some of you.

You can download full working sample here:  MarketplaceSearch.zip

Happy coding!

Posted by msicc in Dev Stories, Windows Phone, wpdev, 0 comments

Dev Story Series (Part 4 of many): How to open links from a WebBrowser/WebView in Internet Explorer

XAMLWebView

Today I will share my solution of how to open links from a WebBrowser or WebView on Windows Phone and Windows 8 (as I did in my app for msicc.net).

Generally links are opened within the same WebBrowser or WebView element. On Windows Phone you can solve this problem pretty easy with only one simple method:

public void WebBrowser_Navigating(object sender, NavigatingEventArgs e)
        {
            e.Cancel = true;
            WebBrowserTask wbt = new WebBrowserTask();
            wbt.Uri = e.Uri;
            wbt.Show();
        }

In Windows 8 this gets a bit more complex. There is no Navigating method, and this is why we have to combine different languages together. We will use the ScriptNotify event to pass the link via a small java script and launch IE with the new link.

First, you need to add the function to your HTML string.  I used a RegEx method to add all the pattern that is needed to all links. As I know that a lot of us (especially junior devs like me) have their problems with RegEx, here is my method to add them:

public static string AddScriptToLink(string text)
        {
            const string hrefScript = " onclick="return OnLinkClick('{0}')" ";
            const string pattern = @"href=""(.*?)""";

            var result = text;

            var matches = Regex.Matches(text, pattern);
            var sortedMatches = matches.Cast<Match>().OrderByDescending(x => x.Index);
            foreach (var match in sortedMatches)
            {
                var replacement = string.Format(hrefScript, match.Groups[1].Value);
                result = result.Insert(match.Index, replacement);
            }

            return result;
        }

After you did that, you will be able to use the following script:

<script type='text/javascript'>
	function OnLinkClick(a) 
		{       
         	 window.external.notify(a);       
		 return false;    
		}
</script>

I pass this script together with the HTML string (HTML methods need to be first!) to the WebView. I recommend to save the script as a static string, so you have do insert only the name of the string.

If you add the ScriptNotify Event to your WebView, you will be able to use LaunchUriAsync with the value of e, which is the link.

private async void WebView_ScriptNotify(object sender, NotifyEventArgs e)
        {
            await Windows.System.Launcher.LaunchUriAsync(new Uri(e.Value));
        }

I am not sure if there is a better way to do this, but that is my way. It works like it should and does not hurt the experience of my app.

As always I hope this is helpful for someone out there. If you have any way to improve that, feel free to leave a comment below.

Posted by msicc in Dev Stories, win8dev, wpdev, 0 comments

Editorial: 2012 – what a year!

logo_white

The year is coming to an end soon, so I wanted to write a short summary of my 2012 with Microsoft and MSicc.net.

Screenshot (47)

I started the year with a clean install of the Windows 8 preview, and was using it since then as my main PC OS. Everyday I felt more in love with the speed of Windows 8 and the idea of using apps on a PC. Microsoft constantly updated their previews over the year, until the final release.

Also Windows Phone was getting new attraction with the awesome Lumia 900. Nokia and Microsoft started a big ad campaign to support the launch of this device. Surely some of you will remember of “The smartphone beta test is over”.

WP_20121225_069

Over the year, Microsoft did tease us a few times with Windows Phone Apollo. We all thought in the beginning that our existing devices will be getting the Apollo treatment, until MS unleashes some more details about Windows Phone 8. Windows Phone 8 shares a lot of the OS with Windows 8, so naturally there has to be new hardware. Windows Phone 7 will get 7.8, which will bring at least the look of the start screen to older devices.

WP_000586

Another beta program was launched for the Xbox Dashboard, which had better voice functionality, and of course another big thing: Internet Explorer on Xbox! That is really awesome as we are now able to surf the web with Kinect support as well as the Smart Glass app on your phone/tablet/PC.

Screenshot (51)

Which leads me to another fantastic release from Microsoft. The Smart Glass apps, no matter on which platform you will use it, extends the experience of films, games and also your Music experience.

Screenshot (48)

Talking about Music, Microsoft finally launched their Music Pass in Germany. Personally, I was waiting for this since the initial release of Windows Phone 7, and now they finally launched it. I did not wait a second to cancel my Spotify subscription, and switched to the Music Pass. And I love the experience, be it on WP7, WP8 or Windows 8/ Xbox, my collection is synched across all devices. I can choose which Songs I ‘ll keep in the cloud for streaming and which I download, so there is always a growing collection for me now.

I was also attending several developer days from Microsoft, which helped me in some parts of my own dev story. I updated Fishing Knots SE and plus several times this year and created I learn to tie my shoes, which is getting really good reviews all over the web. If you want to take a look at these apps, they all come with a test version, just type MSiccDev in the search, you will get a list with all of my apps.

Screenshot (52)

Sadly I have a bit trouble with the updated version of MSicc’s Blog for Windows Phone, I hope I can release it in early 2013, so you all can read and discuss or share articles from your phone.

Of course all of my Windows Phone apps will receive a special Windows Phone 8 update while keeping the work on the WP7 version.

I have also started development of a Windows 8 app for MSicc’s Blog, which I will submit in the early 2013 days to Microsoft to get it approved for the Windows 8 store.

Screenshot (53)

My personal highlight this year was to attend a keynote of Steve Ballmer himself, which was absolutely motivating as user and even more as developer. He really knows how to keep the crowd attending, and I really have to thank Microsoft Germany for this unique experience.

I want to thank Mark and Sean for joining me here on MSicc.net to entertain and inform you all, I bet we will see some awesome articles of both next year!

A big thanks also to the WPDev & Win8Dev community out there (you all know who you are). Keep up your great work and please keep the community alive!

Now I will come to an end with this post, as I want to further play around with my awesome Lumia 920 which Santa (aka my lovely wife) gifted me this year at Xmas.

What were your highlights this year? Leave a comment below!

As here in Germany is said for the new year wishes in advance: “Have a good slide into the new year”, stay safe and enjoy your time!

Posted by msicc in Dev Stories, Microsoft, Windows, Windows Phone, Xbox, 5 comments

Merry Xmas from Msicc’s Blog

MSicc's Blog Team XMAS

We had an amazing year. Microsoft launched Windows 8, Windows Phone 8, updated the Xbox Dashboard and the Xbox Live services. And there are a lot of things that are worth a mention, but this post is a short salute from our small team here at MSicc’s Blog.

A special thanks goes to Mark and Sean, who have started to support me with their own thoughts and articles, which is a huge enrichment..

Now that Xmas is knocking on our doors, we want to salute you, our readers, followers and friends, with a short message of every team member.

 

Mark (BinaerForceOne):

Dear readers and visitors,

 

I have to admit that I’m terribly bad at these things, but I want to wish all of you a merry Christmas, happy holidays and just a beautiful time with those who matter most:

 

your loved ones. Be it your family or close friends. I hope you enjoy it as much as I do.

 

See you all next year. 🙂

 

Sean (TheWinPhan):

What’s on your Christmas list…Lumia 920? 8X? Ativ S maybe? Have you been naughty or nice?

 

Myself and the rest of my WinPhan Family want to wish all of you Windows Phone owning readers, the happiest and Merriest of Christmas and may all your wishes and hopes come to fruition!

 

Thank you all for taking the time to follow along as we continue to profess our love, discuss the many nuances, and talk about Windows Phone and Microsoft here. Please be safe, love your family, and take time to appreciate all that is in your life!

 

Good Health, Merry Christmas, and Happy New Year!!!

 

The WinPhan

 

Marco (MSicc):

Dear reader, visitor, follower and friend,

 

we had a year full of action, with ups and downs, troubles, amazing keynotes, waiting for releases from Microsoft and their OEMs.

 

Now it is time to calm down for a few days, and give all attention to our families and our friends – apart from our technical life.

 

I wish you and your families a merry, merry Christmas. May the Xmas star shine for you and your loved ones and keep you safe.

 

We will continue our work between the years, for now enjoy your family time!

 

Posted by msicc in Microsoft, Windows, Windows Phone, Xbox, 1 comment

Sean’s Editorial: This Is How I Use “Rooms” For WP


With the release of Windows Phone 8, there are a tremendous number of new features available Many aren’t available for WP7, or are but have inherent limitations. Some are major additions and some are minor changes. The feature that I find myself utilizing more than any other option on my Lumia 920 is the new Rooms feature. If you haven’t had the opportunity to upgrade to WP8 yet, Rooms are similar to Groups for WP7, but with many additional and VERY useful features. My wife and I both have WP8 Lumia 920’s, so I’ve had the chance to use the Rooms feature often and will give you some of my experiences, the positives of Rooms, and some of the needed improvements to this unique feature from Microsoft.

 
Bare with me for a second, this is more of a recap of  Rooms before I better describe how it has become such a vital aspect of my phone and world. First, let’s start off with what the Rooms feature is. Like Groups, Rooms is a collection of contacts from your People Hub that you want to group together for easier and more organized communications with. The 1st big difference between the 2: Groups are people you add into a hub without their permission, making it easier for YOU, the user, to better keep track of up to 25 people and communicate with them via the various integrated services on WP. Unlike a Group though, a Room requires you to be invited to or for you to invite participants in a Room you’ve created. A Room can’t exceed 10 members and you’re limited to participating in no more than 5 Rooms at a time. In addition invites are only sent via SMS, so you need to be in network range to send or accept. Once you’re in a Room, WiFi can then be used as your connection. This was an issue for me personally, as my home is not within my carrier’s network range. I had to wait to get into reception before accepting an invitation and sending an invite for a different Room.
Many of you have read about the features included in Rooms for WP8, so I won’t spend a lot of time detailing what’s already been written. It has a very simple minimalist feel and look to it, but does a great job of capturing the essence of Windows Phone with all the integrated services right at your fingertips and easily accessible. Here’s the short of what a Room consists of:

     

  • Members Screen-live tile of the members of the room/What’s New via social networks/Member Photos/Group email/Settings
  • Messenger-IM with the members in your Room
  • Calendar-Add/View/Edit events
  • Photos-Add/View/Comment on Room members uploaded pics/
  • Notes-Add/View/Edit notes added by Room members

 

So who is this wonderful feature, created by the reinvigorated and innovative team at Microsoft, available to? If you own a WP8, you’re in luck as all the services come stock and work great with your device. What if you own a WP7…or maybe you own a WP8 but know someone with an iPhone that you would like to share this experience with. Well there’s good and bad news. It IS available to  WP7 and iPhone owners, but with limitations. I’m personally in a Room with my wife and in another with other Lumia 920 owners, so I have to be honest…I’m not sure of how well the non WP8’s behave in a Room. This is how Microsoft describes the experience for non WP8 Room members:

If you have a Windows Phone 7 or an iPhone, you can join a room that someone with a Windows Phone 8 creates and invites you to. You’ll be able to set up the room’s shared calendar on your phone and view, create, and edit events on it. Your changes will appear on the other members’ phones and their changes will sync to yours. Other Rooms features work best on Windows Phone 8. Group chat(Messenger) in Rooms is only available on Windows Phone 8. Room members with a Windows Phone 7 or iPhone won’t be able to participate.

 

  

Rather than focusing on the specs, I’m going to spend my time in this piece talking about how I personally use these features on a daily basis, quite perhaps, more than any other aspect of my Lumia 920. As I mentioned before, I’m involved in 2 rooms currently. The Lumia 920 Room is a group of 10 owners of the 920 where we discuss many things 920 related and some other things too. It’s a great way for me to stay connected with other Winphans and feel the WP love! The second Room I’m involved in is one my wife and I made to stay connected in our busy world. I’m going to talk about that first as it garners most of my time and well…I’m using it as I’m writing on my laptop this very second.

 

I’m sure many of you can relate to this description: I am married, we have children, we both work, our kids have busy schedules, somebody wants this, somebody wants that, etc. Well the same holds true for my wife and I. We both have busy schedules and we have children, but don’t want to lose out on what matters most, each other. Our Room has really helped to make us more communicative throughout the day and easier to share the day’s doing even though we’re apart. It’s why we fell in love in the first place, we enjoyed sharing experiences and thoughts together. We are in an era however, where finding time with your loved one or people you care about becomes harder due busier schedules, finances, and other various factors. A Room is really the 1st of its kind. It offers a bit of a social network feel, but in a much more intimate setting and brings some easy ways to connect the important and not so important part of your day to the person or people who are important in your day.

 

Obviously, the most used feature of a Room is the Messenger, or chat. This is a downfall of WP7, the lack of integrated Messenger just doesn’t make sense. Aside from FB chat, KIK, and a couple of others, there is slim pickins’ when it comes to IM and Window Phone. Having Messenger integrated gives another very stable IM choice to people considering a switch and with something as important as messaging, more is better. I spend most of my time near my home and as I mentioned above, my carrier’s network does not reach to it. A simple SMS is out of the question and most SMS apps have unreliable servers making texting a challenge often. My wife however, works in town and is in network range so SMS is fine. However, if my apps server is down then she can’t reach me then we’re back at square one. That has been our experience until having a Room. There are times were are carrier’s network is bad, but Messenger is always reliable. What is great for my wife is that the message shows up in her Messaging Hub just like a SMS or FB chat does. This gives you the option to have a live tile for your Room or not, either way, you’re going to get a notification.

 

An interesting feature to a Room’s Messenger chat is the storage of conversations in your Windows Live email. It’s not always consistent as to what will or won’t show up in your inbox, but some items do appear there. In the long run, if Microsoft straightens that out and has a Room consistently feeding through your email, that’s just one more example of 3 Microsoft’s 3 screens concept. If your WP isn’t near you, you don’t have to miss out on a conversation. Your Messenger also comes with voice to text dictation, which is a great little feature. In addition to the above features, Messenger allows you to check-in with your location and with the tap of the map, other members can look at their Local Scout for where you are.

 

So my wife and I both love to take pics and save pics we see on the internet and then share them with each other. Instead of having to send emails back and forth or sit and wait for the other person to scroll through their various photo albums looking for that one pic they saved, it’s much easier to use the SkyDrive integration and share it directly to our Room’s photo album. You can comment on a pic while viewing it as well, which can lead to long threads of their own aside from Messenger. Because of the SkyDrive integration it’s super easy to upload any image directly to the Room’s album, whenever you share an image you’ll see the Rooms you participate in as an option. You’ll also be notified via your live tile when a member uploads a new image. On a recent trip to L.A., my wife was able to almost stream her day in pics posted to our album. It was wonderful being able to experience things almost in live time as she showed me the world from her eyes. More than that, it was fairly easy for her to keep me up to the moment with how simple and NOT time-consuming it is to share. In addition to viewing pics while in your Room, your shared Room album is stored to SkyDrive allowing you to access those same pics from your laptop, tablet, Xbox, as well as your phone’s Photo hub. Ahem…3 screen concept yet again!

 

When you have busy schedules, that means you have filled up calendars and keeping them all in order can be a mind-boggling and time-consuming task! Your Room comes equipped with its own calendar that has also been integrated with SkyDrive thus adding itself to your existing Windows Live Calendar without you having to do anything. You might think “I’ve already linked my Windows Live Calendar with someone, how is this any different?”. The answer is this: When you add a new appointment/event with your phone’s calendar, you must enter an attendee to share it with and an email is sent with a request to accept or decline…too many steps, too much time, and things that can go wrong. With your Room, when a new item is added, it automatically includes all members and then places it in their calendar. No emails to accidentally end up in bulk or junk and get missed, just set it and that is that! Events from your Room will show up on your Calendar tile on your WP, laptop, or tablet. Yes, I know, 3 screens…I cannot say enough about SkyDrive and the way Windows Phone has integrated it into our devices!

 

The last main feature I’ll talk about is Note. Your Room’s Notes is a shared folder using your WP’s One Note, which has been integrated with SkyDrive allowing for you guessed it, a 3 screen concept! Start a Note or add to it. Christmas is right around the corner and my wife and I haven’t done a lick of shopping for gifts yet! We both are quite busy so it can be hard to both end up at a store looking for Christmas goodies at the same time. No worries, we’re going to sit together and using our Room make a gift Note. We can add or eliminate items later whether we are in the same room or in different areas with SkyDrive. If I buy a gift, just notate it on the Note and my wife can see not to get it. She doesn’t have to stand waiting for me to reply to a text or email if she’s at a store and isn’t sure if I already got it. We’ve all waited for that damn text or message at one point or another, be honest. NO MORE! If she thinks of something for me to pick up while I’m shopping for groceries, BAM…add it to the Note and it’s just that simple! Like Messenger, Note also comes with voice to text dictation.

 

In addition to the features I described above, the members of the Room all appear in one spot as live tiles. The members live tile in a Room are the same as in your People hub, so each member’s live tile shows their social network updates dancing about on their tile and all contact info can be accessed there as well. One of the features that appealed to many of us early adopters of Windows Phone was the Hub concept. It still does to newcomers, not needing so many apps to do simple tasks unlike the device they recently left behind whether it be Android or iPhone. Well Windows Phone has done it again! I’ve seen many apps that attempted to emulate each one of these tasks individually but Microsoft has done a great job at building each service into WP8 and then offering a way to use them all at once without the need of an app.

So I’ve given you all the upsides to a Room. What are the things that could be improved upon? This is a much shorter list. I actually only have 1 legitimate complaint, the rest are things that need just a little tweaking. My major complaint is this: there is no way to mute a Room. If you have an active room, your phone could be alerting you for hours on end as your Room’s Messenger gets lit up by members. Keep in mind, members of a Room can be from all over the world so it’s always Windows Phone time somewhere in the world in my 920 Room. The ability to turn off a Room’s alerts would be great! At this point the only way to turn off chat alerts is by leaving the Room in entirety. Not a good solution.

Aside from that, I would like to see the ability for a Room to do a better job at linking its members social networks together. Because it’s Windows Live, we all share each other Windows Live contact info. What if I want to know someone’s Twitter, their other social networks, or other contact info. There isn’t a quick way to do it in a Room yet. Yes you can share contact info via email, but that’s an added step that usually won’t be taken.

My last thing I can see a bit of an issue with is less to do with a Room and more to do with a carrier’s network. If you have poor network coverage the Room definitely doesn’t function as well. Just because you have enough reception to text doesn’t mean you have a strong enough signal for a Room to operate in “Real Time”, you may notice delays in Messenger and troubles syncing with SkyDrive. When I’m on WiFi I have yet to face any issues however.

When I first heard of Rooms in June, I thought it was cool sounding but had no idea how useful and in the theme of Windows Phone Rooms would really be. In terms of normal non gimmick function and by that I mean function but not a selling ploy like Siri for example, I really think this is the clear choice for top addition to Windows Phone 8. I think it will take a second, but you will hear more and more about Rooms in time to come. There are so many ways to make a Room work for each person, the question is simple…how will you make your Room or Rooms work for you?

To learn more about Rooms for Windows Phone 8 just click here.

 

 

 

 

Posted by TheWinPhan in Microsoft, Windows, Windows Phone, 2 comments

The WinPhan is joining msicc.net!


Well, I’m back. Some of you know me from Twitter, Facebook, and various WP news blog sites as WinPhan7. For those that don’t know me, nice to meet you. I’ve evolved slightly, I now go by a more encompassing title: The WinPhan, but you can also call me Sean. I’m not a developer, although I am interested in learning the trade. In all honesty, I use a chainsaw in the woods for a living…but MAN, do I love technology! More than that, I admire what Microsoft is doing to innovate technology!

I’m not going to make my first post too long, as you read more of my articles you’ll see I can be long winded on my soapbox. So here’s a little about myself and my love for Microsoft. I’ve never been a fan of Apple, their proprietary malarkey, the way they take advantage of their faithful consumer base, or their iPoop products! I have even more disdain for Google, their horrid mess of a mobile OS, their antics, and their dishonest ways! Don’t get me wrong, I don’t think Microsoft can walk on water. They’ve made some not so popular decisions, but speaking in terms of the past few years it’s my honest opinion that you would be hard pressed to find ANY company in ANY industry that has matched the innovation and positive movement that Microsoft has. With the release of Windows 8 and all that it encompasses, it’s a work of absolute beauty to me.

I’m married and have 2 out of our 4 kids still living at home so we have many Microsoft products. Currently we have the Xbox360, 9 Windows Phones(2 HTC 7 Pros, 2 HTC Titans, 1 Samsung Focus S, 2 Nokia Lumia 900’s, and 2 Nokia Lumia 920), 3 laptops(Acer Aspire with Windows 7, HP G72 with Windows 7, and my little HP Pavilion g6 is now running Windows 8), and a Zune HD. We even have a couple desktops and a couple Windows Mobile Phones sitting around, suffice to say, we are a Microsoft home.

The Windows Phone experience is what turned it all into a real passion for me though, yes even pre-Mango was a beautiful experience for me. It all just made sense, what it was, what was soon coming, and what needed to be done in the future. Here I sit now able to enjoy my Lumia 920 running WP8 and think a couple years back to the moment when the sales person tried to talk me into an Android as opposed to the little giant HTC 7 Pro. Best tech decision I ever made was right then! I’m blown away by the support Windows Phone offers, I’m blown away at how dedicated our dev community is, and I’m blow away by how unified and interactive our WinPhan community is! Like many of the readers here, I’m proud to have been part of Microsoft’s ground movement from the beginning, I’m a proud WinPhan!

I ‘ve got lots to say but I’ll save that for future posts. I’ll be writing more consistently now that winter nears and I find myself indoors a lot more. Thanks for reading and you can catch me on Twitter: @TheWinPhan

 

 

Posted by TheWinPhan in Microsoft, Windows, Windows Phone, Xbox, 7 comments