Windows Phone Mobile apps for SP2013

Yesterday I attended the “Building Windows Phone Mobile apps with SharePoint 2013” sesson, here are a few notes I made:

  • The new Windows Mobile API in the Client Side APIs, in addition to SharePoint mobile SDK, makes it easy to extend SharePoint to Windows Phone. It includes authentication via CSOM, push notification possibilites, location, etc. It is probably best suited for extending specific parts of SharePoint to the mobile, such as administration of a list (support, helpdesk, contacts, etc.). Via the SDK you actually get a new project type for building an app against a list in SP2013. (Read more about building apps here: http://msdn.microsoft.com/en-us/library/jj163228.aspx)
  • For other devices such as iPhone and Android, the best approach for building apps against SharePoint would be to use the REST API. (Read more about choosing the right API here: http://msdn.microsoft.com/en-us/library/jj164060.aspx)
  • If you have the need for a mobile version of your intranet or external web site, the best choice is to use Device Channels

Here is an example of a contacts list made available through a Windows Mobile (picture source: MSDN, http://msdn.microsoft.com/en-us/library/jj163228.aspx)

Extending Social with the CSOM in SharePoint 2013

Here is a short summary from the “How to extend Social in SharePoint 2013” session. The session was a technical introduction to the Client Side Object Model (CSOM) of the Social functions in SP2013 (all of the new functions are also available in the server side model).

With the possibilites of the new CSOM, it is easy to build rich custom end user functionality against the social functions – imagine for example a social feed integrated in to the master page and visible on all pages in your site. The three main parts of Social in SharePoint 2013 are:

User Profiles
Following
Feeds

New namespaces and classes are included in the Client Side Object Model that enables us to program against these parts of the social functions:

UserProfiles – resides in the microsoft.sharepoint.client.userprofiles namespace. The most important class is the PeopleManager. The methods in the PeopleManager that probably will be most frequently used are GetMyProperties(), GetMyPropertiesFor(), SetMyProfilePicture(). Updating user profile properties from CSOM is not possible.

Following – resides in the microsoft.sharepoint.client.social namespace. The most important class is the SocialFollowingManager. The methods in the SocialFollowingManager that probably will be most frequently used are GetFollowers(), GetFollowed(), StopFollowing(), Follow().

Feeds – resides in the microsoft.sharepoint.client.social namespace. The most important class is the SocialFeedManager. The methods in the SocialFeedManager that probably will be most frequently used are CreatePost(), DeletePost(), LikePost(), GetFeed().

Device targeting

In SharePoint 2013, Microsoft has built in new capabilities for targeting different devices. The two main technologies that should be used to target mobile devices are Device Channels and Image renditions.

Device channels

Device channels are set up using different user agent strings and separate master pages based on these. For user agent strings, you can use just parts of the string, for example “Windows Phone”, “iPhone”, etc. In addition to separate master pages, it is now possible to target content based on the device channels you have defined.

The use of device channels is a different technique than building responsive design using CSS 3 media queries/fluid grid layouts/etc., but it does not eliminate the possibility of building a responsive design. It would actually powerful to combine the two techniques: if you for example target a mobile device you can use a device channel that uses code that is responsive for that specific device – you can make it behave responsively when for example flipping from the “portrait” to the “landscape” view.

Debugging the different device channels with your favorite browser and developer tools is made possible with a device channel query string parameter (for example “?devicechannel=surface”)

Image renditions

With Image Renditions you can set up multiple sizes, aspect ratios and crops for the same image. Targeting the right image for a device is done by using a query string parameter (for example “?width=320”). The Image Rendition functionality will use this parameter to find the closest image version.

Search driven publishing

There is a very important new concept in SharePoint 2013 publishing: search driven publishing. This is a concept that breaks down site collection boundaries (get search index content from multiple site collections), allows for flexible and dynamic publishing, separates presentation from storage and eliminates large list thresholds. The existing publishing model in SP2010 still works, but the new search driven capabilities gives you great new possibilities.

Using the Content Search Web Part, Catalogs, Managed Navigation, Refiners, Usage Analytics stored in the search index, etc., gives you a truly search driven publishing web.

Content Search Web Part

The main idea behind search driven publishing is to use the content of the search index (the crawled content) to publish, republish and target information to the end user. The single most important part of this functionality is the new Content Search Web Part. This is a web part that enables us to build queries in the UI (the Query Builder) to show content, use Query Rules to further manipulate the search result (for example targeting, related content, etc.). The web part can be added to any page and can be found in the “Content Rollup” category, along with the good old Content Query web part:

The Content Search Web Part uses the concept of Display Templates for showing the query results. There are a few templates included out of the box, but this is an area where you certainly want to build your own templates to fit with your web site design. Using HTML and JavaScript there are great possibilities for making rich user experiences.

One “problem” when using this web part is that it is based on the index, and there is an index lag – but then again, the new enhanced search capabilities of SharePoint 2013 (for example continuous search indexing) should minimize this problem.

Another important note to make about the Content Search Web Part is that it probably not will be available in Office 365 (but this has not been definitely stated at the SharePoint conference as far as I know).

Content Catalogs, Managed Navigation and Refiners

The concept of search driven publishing also includes the new Catalog concept of SharePoint 2013. Any list or library can be registered as a catalog, and page templates can be built for items in a catalog. A typical usage is a product catalog where there is a product page template, but it can also be used for any other type of content (for example news, articles, list of helpdesk tasks, etc., etc.). Using managed metadata from the taxonomy term stores enables you to build a navigation based on terms. So for instance, if all products in your product catalog is tagged with a product category, this can be used for navigation.

Another extremely useful implementation of using managed metadata is the possibility of showing Refiners for a list of items in a catalog. Refiners are used to filter down the items shown on a category page. An example could be that you refine a product catalog page to show only products that have a certain color, is in a certain price range, etc.

Usage analytics

Another very important part of search driven publishing is the new capabilities of usage analytics in combination with search. The new Analytics processing engine, in addition to be used for analytics reporting, now actually stores the data in the search index! This is very good news: you can now easily use the Content Search Web Part to show recommendations (“users who bought this also bought…”), target content, etc. This functionality uses so called Event types stored in the Event Store, and there are many predefined event types (for example “ViewsRecent” for recent viewed pages). It is also possible to define custom event types that will be stored in the Event Store and can be used along with the built-in types.

Notes on the new WCM functionality of SharePoint 2013

Today I attended the session “Best Practices for designing websites with SharePoint 2013”. It was a really interesting session that included good demos of the new design process of SharePoint 2013.
Some of the important changes of the basic web site functionality are:

  • No more tables for wp and zones (Yes!!!)
  • Client-side rendering with the Content Search Webpart
  • CSS is completely re-written and simplified (!)
  • Support for friendly URLs (no more “/pages”!!)
There is support for a completely new design process in SharePoint 2013. This is administered by the new Design Manager (see the figure below). The recommended process for designing a web site in SP2013 includes:
  • Create a layout html page in your favorite html design tool (Dreamweaver, Visual Studio, Notepad, etc.)
  • Run the auto-convert function that creates a SharePoint master page of the html layout page and inserts code snippets to the html page. It includes code for ribbon, placeholder main, etc., and enables you to put these where you want to in the html layout page. A server based preview can be done directly from within SharePoint
  • Use the new Snippet tool to insert snippets to the layout page and the generated master page. Snippets can be for example SharePoint navigation, search box, etc., etc. There are lots of built-in snippets, and you can also create your own
  • Create display templates (more about this in a later post)
  • Create page layouts (more about this in a later post)
  • Publish and apply design to the live site
  • Create a design package automatically. A wsp solution file is genereated and only the neccesssary files are included.
SharePoint Design Manager
This new tool (the Design Manager), enables us to let a web designer build a layout page in clean HTML and a SharePoint developer can take over, import it, and even add it to his SharePoint project in Visual Studio for packaging and source control handling.
 
 

Notes from SPC 2013: The extended client side object model

The client side object model has been extended to cover much more of the object model that is available server side. Examples are publishing, search, taxonomy, the new translation service and more. A new API for Windows Phone Application is also available. The client.svc is extended with REST capabilities using the OData protocol, support for XML, JSON, etc. is included. One great benefit is that we can use REST for building queries against lists instead of CAML queries.
Here are some links with more information:

Keynote summary

The first session today was the keynote and includede speakers like Jeff Teper, Jared Spataro, Scott Guthrie. Here are some interesting notes from the session:

  • A Windows 8 app for SharePoint social feed was released today
  • Skydrive Pro is the new way of storing and sharing files. It replaces the local MySite library of SP2010. Windows 8 app och IOS-app finns för Skydrive
  • Lots of talk about the integration with Yammer, but a little difficult to see the benefits. Probably, more deepdive information will be given in other sessions. Some interesting information was given: Yammer is free in Office 365, there is pro version for on-premises installations with more functionality that has a cost which was said to be relatively low.
  • Office 365 was promoted heavily
  • Scott Guthrie had a really good presenation of the new cloud app model
  • There are lots of performance enhancements in SP2013: ex. 40% faster loading of the page in the browser, 50% faster server side, Better picture compression – SP2013 graphics reduced to 25% of the SP2010 graphics
  • Upgrading from SP2010 to SP2013 should be very simple, and you have the possibility to run an “evaluation” upgrade for testing.
  • Site mailboxes and Exchange integration was mentioned
  • The new Web Content Management functionality was mentioned. Details will come in a later post after sessions with more deep dive information
  • The new capabilities of Search was briefly explained (fast integration, search web part, search-based navigation, etc).