SharePoint 2013. Mobile Object Model para Windows Phone

Dentro de las múltiples versiones del modelo de objetos de cliente de SharePoint 2013, nos encontramos con un SDK para el desarrollo de aplicaciones Windows Phone, el Mobile Object Model. Aunque sea un SDK para Windows Phone 7 y no se sepa nada de la versión para Windows Phone 8, los ensamblados son totalmente compatibles con WP8 y funcionan sin problemas.

Desde el Mobile Object Model, podemos trabajar con listas, bibliotecas de documentos, las nuevas notificaciones push de SharePoint 2013, Perfiles de usuarios, Social, y casi todos los elementos que SharePoint expone en cliente.

Si ya hemos trabajado con el Client Object Model de Silverlight, trabajar con esta versión para Windows Phone es prácticamente lo mismo, básicamente hay que tener presente las llamadas asíncronas y que los objetos no se cargan hasta que lancemos el query al servidor.

Autenticación

El principal problema en Windows Phone, es la autenticación del usuario frente a SharePoint y para esto, tenemos una clase, Authenticator, que se encarga de realizar la autenticación por nosotros, aunque podemos realizarla manualmente.

    var context = new ClientContext(“https://xxx.sharepoint.com”);

    var authenticator = new Authenticator();

    authenticator.CookieCachingEnabled = true;

    context.Credentials = authenticator;

 

Consultas a lista

No tenemos cambios significativos cuando realizamos consultas a listas, básicamente nos obtenemos la lista, con o sin el CAML query, trabajando siempre desde el contexto de cliente y en el ExecuteQueryAsync obtenemos los elementos de esa lista o consulta.

    var lista = new ObservableCollection<Announcement>();

 

    var query = GetAnnouncementQuery();

    var items = Context.Web.Lists.GetByTitle("Announcements").GetItems(query);

    Context.Load(items);

    Context.Load(items, listItems => listItems.Include(item => item.FieldValuesAsText));

 

    Context.ExecuteQueryAsync(                

        delegate(object sender, ClientRequestSucceededEventArgs args)

        {

            foreach (var item in items)

            {

                var anuncio = new Announcement();

                anuncio.ID = item.Id.ToString();

                anuncio.Title = item.FieldValuesAsText["Title"];

                anuncio.Body = item.FieldValuesAsText["Body"];

                anuncio.Expires = item.FieldValuesAsText["Expires"];

                anuncio.Created = item.FieldValuesAsText["Created"];

 

                lista.Add(anuncio);

            }

 

        },

        delegate(object sender, ClientRequestFailedEventArgs args)

        {

            //Manejamos el error de la consulta

        });

 

Crear elementos en lista

Como siempre, nos creamos un objeto del tipo ListItemCreationInformation y lo envíamos al contexto.

    var subscriptionList = Context.Web.Lists.GetByTitle("HubSubscribers");

    Context.Load(subscriptionList);

    deviceItem = subscriptionList.AddItem(new ListItemCreationInformation());

    deviceItem["Title"] = displayName;

    deviceItem["UserAccount"] = acccountName;

    deviceItem["ChannelUri"] = pushChannel;

    deviceItem["ChannelUriDate"] = System.DateTime.Now;

    deviceItem["DeviceId"] = deviceId;

    deviceItem.Update();

    Context.ExecuteQuery();

 

Obtener un perfil de usuario

En el Client Object Model de SharePoint 2013 tenemos acceso a los perfiles de usuario, y en Windows Phone también. Para esto, nos creamos un PeopleManager y obtenemos las propiedades que necesitemos.

    var peopleManager = new PeopleManager(Context);

    var personProperties = peopleManager.GetPropertiesFor(userAccount);

 

    context.Load(personProperties, p => p.AccountName, p => p.DisplayName, p => p.Email, p => p.UserProfileProperties, 

                 p => p.DirectReports, p => p.Peers, p => p.PictureUrl);

    context.ExecuteQueryAsync(

        delegate(object sender1, ClientRequestSucceededEventArgs args)

        {

            var profile = new Profile();

            profile.AccountName = personProperties.AccountName;

            profile.DirectReports = personProperties.DirectReports.ToList();

            profile.Peers = personProperties.Peers.ToList();

            profile.DisplayName = personProperties.DisplayName;

            profile.PictureUrl = personProperties.PictureUrl;

            profile.Email = personProperties.Email;

            profile.Manager = personProperties.UserProfileProperties["Manager"];

            profile.Status = personProperties.UserProfileProperties["SPS-StatusNotes"];

            profile.WorkPhone = personProperties.UserProfileProperties["WorkPhone"];

            profile.Department = personProperties.UserProfileProperties["Department"];

 

            loadProfileCompletedCallback(new LoadProfileCompleteEventArgs { Profile = profile });

        },

        delegate(object sender1, ClientRequestFailedEventArgs args)

        {

            //Manejamos el error de la consulta

        });

 

¿A qué esperamos para desarrollar aplicaciones de negocio para Windows Phone? Personalmente, creo que nos puede abrir un nuevo abanico de posibilidades y de aplicaciones empresariales que no han terminado de llegar con SharePoint 2010. Por cierto, aunque no lo he probado al 100%, este modelo de objetos de cliente también funciona con SharePoint 2010, salvo las funcionalidades nuevas, como los perfiles, que no tenían soporte de cliente en SharePoint 2010.

 

Saludos a todos…

Un pensamiento en “SharePoint 2013. Mobile Object Model para Windows Phone”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *