Table of contents
TOC
Collapse the table of content
Expand the table of content
Última actualización: 25/07/2018

Abrir los clientes de OneNote

Se aplica a: blocs de notas para consumidores de OneDrive | blocs de notas para empresa de Office 365

Puede utilizar la propiedad links de una página o un bloc de notas para abrir OneNote en una página o bloc de notas determinado.

La propiedad links es un objeto JSON que contiene dos direcciones URL:

{ 
    "links": {
        "oneNoteClientUrl": {
            "href": "onenote:https://..."
        },
        "oneNoteWebUrl": {
            "href": "https://..."
        }
    }
}

Las direcciones URL abren la página o el bloc de notas en la aplicación cliente nativa de OneNote o en OneNote Online.

oneNoteClientUrl

Abre el cliente nativo si ya está instalado en el dispositivo. Esta dirección URL incluye el prefijo onenote.
Abre la versión específica del idioma si hay una instalada en el dispositivo. En caso contrario, usa la configuración de idioma de la plataforma.

oneNoteWebUrl

Abre OneNote Online si el navegador predeterminado en el dispositivo es compatible con OneNote Online.
Usa la configuración de idioma del explorador


La API de OneNote devuelve la propiedad links en la respuesta HTTP para las siguientes operaciones:

  • Crear una página mediante el envío de una solicitud POST pages
  • |||UNTRANSLATED_CONTENT_START|||Create a notebook by sending a POST notebooks request|||UNTRANSLATED_CONTENT_END|||
  • Obtener los metadatos de la página mediante el envío de una solicitud GET pages o GET pages/{id}
  • |||UNTRANSLATED_CONTENT_START|||Get notebook metadata by sending a GET notebooks or GET notebooks/{id} request|||UNTRANSLATED_CONTENT_END|||

Los ejemplos siguientes muestran cómo comprobar el código de estado de la respuesta, redistribuir el JSON para extraer las direcciones URL y, a continuación, abrir el cliente.

Ejemplo de iOS

En el ejemplo siguiente obtiene las direcciones URL de cliente de OneNote de la respuesta JSON. Utiliza la biblioteca AFNetworking (http://afnetworking.com/) para extraer las dos URL En el ejemplo, created es un puntero al objeto ONSCPSStandardResponse utilizado para almacenar los valores de respuesta, y responseObject contiene el JSON redistribuido.

    /* Import the JSON library */
    #import "AFURLRequestSerialization.h"

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
            if(delegate) {
                  int status = [returnResponse statusCode];
                  ONSCPSStandardResponse *standardResponse = nil;
                  if (status == 201) {
                        ONSCPSCreateSuccessResponse *created = 
                              [[ONSCPSCreateSuccessResponse alloc] init];
                        created.httpStatusCode = status;
                        NSError *jsonError;
                        NSDictionary *responseObject = 
                              [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&jsonError];
                        if(responseObject && !jsonError) {
                              created.oneNoteClientUrl = ((NSDictionary *)
                                    ((NSDictionary *)responseObject[@"links"])[@"oneNoteClientUrl"])[@"href"];
                              created.oneNoteWebUrl = ((NSDictionary *)
                                    ((NSDictionary *)responseObject[@"links"])[@"oneNoteWebUrl"])[@"href"];
                        }
                  standardResponse = created;
                  }
                  else {
                        ONSCPSStandardErrorResponse *error = [[ONSCPSStandardErrorResponse alloc] init];
                        error.httpStatusCode = status;
                        error.message = [[NSString alloc] initWithData:returnData 
                              encoding:NSUTF8StringEncoding];
                        standardResponse = error;
                  }
                  // Send the response back to the client.
                  if (standardResponse) {
                        [delegate exampleServiceActionDidCompleteWithResponse: standardResponse];
                  }
            }
      }

Ahora que ha redistribuido las URL de la respuesta, puede abrir OneNote con el siguiente código. Utilice oneNoteClientUrl para abrir el cliente OneNote instalado o oneNoteWebURL para abrir OneNote Online.

NSURL *url = [NSURL URLWithString:standardResponse.oneNoteWebUrl];
[[UIApplication sharedApplication] openURL:url];

Ejemplo de Android

En primer lugar, compruebe si el código de estado es el correcto y, después, analice el JSON. El ejemplo supone que se ha enviado una solicitud POST, así que busca un código de estado 201. Si ha realizado una solicitud GET, busque un código de estado 200 en su lugar.

public ApiResponse getResponse() throws Exception {
    /* Get the HTTP response code and message from the connection object */
    int responseCode = mUrlConnection.getResponseCode();
    String responseMessage = mUrlConnection.getResponseMessage();
    String responseBody = null;

    /* Get the response if the new page was created successfully. */
    if ( responseCode == 201) {
        InputStream is = mUrlConnection.getInputStream();

        /* Verify that this byte array is big enough. */
        byte[] b1 = new byte[1024];
        StringBuffer buffer = new StringBuffer();

        /* Copy the body of the response into the new string. */
        /* Make sure the buffer is big enough. */
        while ( is.read(b1) != -1)
            buffer.append(new String(b1));

      /* When the returned data is complete, close the connection 
         and convert the byte array into a string. */
        mUrlConnection.disconnect();
        responseBody =  buffer.toString();
    }

    /* Create a new JSON object, and an object to hold the response URLs. */
    JSONObject responseObject = null;
    ApiResponse response = new ApiResponse();
    try {

        /* Store and verify the HTTP response code. */
        response.setResponseCode(responseCode);
        response.setResponseMessage(responseMessage);
        if ( responseCode == 201) {

            /* Retrieve the two URLs from the links property. */
            responseObject = new JSONObject(responseBody);
            String clientUrl = responseObject.getJSONObject(
                "links").getJSONObject("oneNoteClientUrl").getString("href");
            String webUrl = responseObject.getJSONObject(
                "links").getJSONObject("oneNoteWebUrl").getString("href");
            response.setOneNoteClientUrl(clientUrl);
            response.setOneNoteWebUrl(webUrl);
        }
    } catch (JSONException ex) {

        /* If the JSON was malformed or incomplete... */
        String msg = ex.getMessage();
        msg = msg;
    }
    return response;
}

Mediante las propiedades de la respuesta, la aplicación puede abrir OneNote Online como se muestra en el ejemplo siguiente.

if (response.getResponseCode() == 201) {
    Uri uriUrl = Uri.parse(response.getOneNoteWebUrl);  
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
    startActivity(launchBrowser);
}

O bien, la aplicación puede abrir el cliente nativo de OneNote en un dispositivo Android. Cuando se utiliza la propiedad oneNoteClientUrl, debe delimitar las cadenas de GUID con llaves { } antes de iniciar el intento. En el siguiente ejemplo se indica cómo hacerlo.

if (response.getResponseCode() == 201) {

    // Get the URL from the OneNote API JSON response.
    String onenoteClientUrl = obtainClientLinkFromJSONResponse();
    String androidClientUrl = 
        onenoteClientUrl.replaceAll(
            "=([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})&",
            "={$1}&");

    // Open the URL: Open the newly created OneNote page.
    Uri uriUrl = Uri.parse(androidClientUrl);  
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
    startActivity(launchBrowser);
}

Recursos adicionales

© 2018 Microsoft