Configurar el SDK de Oracle Mobile Hub con la aplicación móvil

Debe configurar Oracle Mobile Hub SDK con la aplicación móvil antes de escribir cualquier código.

Agregar SDK

En una configuración de aplicación básica, sin marcos de sesión, agregará el SDK de cliente de Android a una aplicación.

  1. Descomprima el archivo zip del SDK del cliente Android.

  2. Copie los archivos jar de SDK en la carpeta libs del proyecto de la aplicación. Si esta carpeta no existe, créela en el mismo nivel de la jerarquía que las carpetas src y build.

  3. En Android Studio, seleccione Archivo , Nuevo y, a continuación, Nuevo módulo para iniciar el asistente para importar IDMMobileSDK.jar en el proyecto.

  4. Haga clic en Importar Paquete .JAR/.AAR y siga el asistente para importar IDMMobileSDK.jar en el proyecto.
  5. En el árbol de origen de la aplicación, cree una carpeta llamada assets (en el mismo nivel que las carpetas java y res).

  6. En el grupo SDK, localice el archivo oracle_mobile_cloud_config.xml y cópielo en la carpeta assets.

  7. En el archivo build.gradle de la aplicación, asegúrese de que las siguientes dependencias están registradas para que las bibliotecas SDK estén disponibles para la aplicación.

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.squareup.okhttp3:okhttp:3.9.0'
        compile 'org.slf4j:slf4j-jdk14:1.7.13'
        //to enable the app to receive notifications, include the following:
        compile 'com.google.firebase:firebase-messaging:11.0.2'
    		compile 'com.facebook.android:facebook-android-sdk:4.25.+'
    }
  8. Si la aplicación está diseñada para recibir notificaciones como parte de campañas de análisis, agregue la siguiente línea en la parte inferior de build.gradle.

    apply plugin: 'com.google.gms.google-services'
  9. Abra assets/oracle_mobile_cloud_config.xml y rellene los detalles de entorno del backend móvil que utilizará la aplicación.

Configurar Propiedades de SDK

Para utilizar el SDK del cliente en una aplicación de Android, debe agregar un archivo de configuración oracle_mobile_cloud_config.xml a la aplicación y rellenarlo con los detalles del entorno para su backend en Oracle Mobile Hub. A su vez, las clases SDK utilizan esta información para crear cabeceras HTTP para llamadas REST realizadas a Oracle Mobile Hub.

Empaqueta el archivo de configuración en el grupo principal de la aplicación en la carpeta assets en el mismo nivel que las carpetas java y res. Por ejemplo, en la aplicación GettingStarted de ejemplo, está en /GettingStarted/src/main/assets.

El archivo se divide básicamente en las siguientes partes:

  • El elemento mobileBackend y su contenido.

    Se incluye esta pieza si está utilizando un backend con la aplicación. Las clases de SDK utilizan los detalles de entorno y autenticación que especifica que debe acceder al backend y crear cabeceras HTTP para las llamadas de REST realizadas a las API.

  • Elementos que se aplican a la configuración en conjunto, como logLevel y oAuthTokenEndpoint. Normalmente, estos elementos aparecen en la parte superior del archivo, pero no es necesario.

El siguiente ejemplo de código muestra la estructura de un archivo oracle_mobile_cloud_config.xml.

<config>

  <!--This value is required if you are using OAuth to authenticate against the mobile backend-->
  <oAuthTokenEndPoint>YOUR_OAUTH_TOKEN_END_POINT<oAuthTokenEndPoint>
  <!--Set to true if you want to get logging information-->
  <enableLogger>true</enableLogger>
  <logLevel>DEBUG</logLevel>
  <!--Whether to log HTTP call request and response bodies and headers-->
  <logHTTP>true</logHTTP>

  <!-- Include the mobileBackend element and its sub-elements if you are going 
       to be using a backend to access custom and platform APIs.-->
  <mobileBackend>
    <name>MBE_NAME</name>
    <baseUrl>BASE_URL</baseUrl>
    <enableAnalytics>true</enableAnalytics>
    <authentication>
      <!--possible values for type are [oauth, basic, facebook, tokenExchange ]-->
      <type>AUTH_TYPE</type>
      <oauth>
        <clientId>CLIENT_ID</clientId>
        <clientSecret>CLIENT_SECRET</clientSecret>
        <enableOffline>true</enableOffline>
      </oauth>
      <basic>
        <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
        <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        <enableOffline></enableOffline>
      </basic>
      <facebook>
        <appId>FACEBOOK_APP_ID</appId>
        <scopes>public_profile,user_friends,email,user_location,user_birthday</scopes>
        <basic>
          <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
          <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        </basic>
      </facebook>
      <tokenExchange>
        <! tokenExchange can contain an 'oauth' sub-element or a 'basic' sub-element.
        <oauth>
          <clientId>CLIENT_ID</clientId>
          <clientSecret>CLIENT_SECRET</clientSecret>
        </oauth>
        <basic>
          <mobileBackendId>MOBILE_BACKEND_ID</mobileBackendID>
          <anonymousKey>ANONYMOUS_KEY</anonymousKey>
        </basic>
      <tokenExchange>
    </authentication>
    <!-- additional properties go here -->
  </mobileBackend>

</config>

Los valores que necesita rellenar para un determinado backend se pueden encontrar en las páginas Configuración y Perfil de Aplicación de ese backend móvil.

Aquí se muestran más notas sobre los elementos del archivo.

  • oAuthTokenEndPoint: URL del servidor de OAuth desde el que la aplicación obtiene su token de autenticación. Esta clave se debe proporcionar para todas las aplicaciones que se basan en OAuth para la autenticación. Este valor se obtiene de la página de valores del backend.

  • logLevel: determina la cantidad de registro de SDK que se muestra en la consola de la aplicación. El valor por defecto es ERROR. Otros valores posibles (en el nivel de aumento de detalle) son WARNING, INFO y DEBUG. También se puede especificar NONE.

  • enableLogger: si se define en true, el registro se incluye en la aplicación.

  • logHTTP: cuando se define en true, el SDK registra las cabeceras HTTP y HTTPS en solicitudes y respuestas.

  • mobileBackend: Elemento que contiene los detalles de autenticación del backend y otros detalles opcionales, como las propiedades de sincronización.

    Se obtienen los detalles de autenticación, como las credenciales de OAuth y HTTP, de la página Configuración del backend.

  • mobileBackend/baseUrl: URL base para todas las API a las que llama mediante el backend. Este valor se obtiene de la página de valores del backend.

  • mobileBackend/authentication: contiene los siguientes subelementos:

    • Subelemento type, con valores posibles de oauth, basic, facebook y tokenExchange.

    • Uno o más subelementos para los tipos de autenticación, cada uno con credenciales de autenticación.

      También puede agregar la clave offlineEnabled y definir su valor en true.

  • enableOffline: si se define en true, se permitirá la conexión fuera de línea. Esto sólo se aplica a los tipos de conexión Básica y OAuth. Para que esto funcione, también debe agregar lo siguiente al archivo AndroidManifest.xml de la aplicación:
    <receiver android:name="oracle.cloud.mobile.network.NetworkHelper"
      <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      </intent-filter>
    </receiver>

Configuración del archivo de manifiesto de Android

Los permisos para operaciones como el acceso a la red y la búsqueda del estado de la red se controlan mediante la configuración de permisos en el archivo de manifiesto de la aplicación, AndroidManifest.xml. Estos permisos son necesarios:

  • permission.INTERNET: permite que la aplicación acceda a sockets de red abiertos.

  • permission.ACCESS_NETWORK_STATE: permite a su aplicación acceder a información sobre las redes.

Otros permisos son opcionales. Por ejemplo, hay varios permisos necesarios para que la aplicación pueda recibir notificaciones. Para obtener una ejecución de los permisos disponibles, consulte Permisos de manifiesto de Android en la documentación de Google.

Agregue los permisos en la parte superior del archivo AndroidManifest.xml, como se muestra en el siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="oracle.cloud.mobile.sample" >
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <application>
<provider
	android:name="com.facebook.FacebookContentProvider"
	android:authorities="com.facebook.app.FacebookContentProvider430660953811847"
	android:exported="true" />    
<receiver 
	android:name="oracle.cloud.mobile.network.NetworkHelper"
      <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
      </intent-filter>
    </receiver>

    (.....)
  </application>
</manifest>

Para agregar el SDK de cliente a la aplicación puede que sea necesario configurar el archivo AndroidManifest.xml para agregar nuevos permisos o actividades. Por ejemplo, si agrega la biblioteca de SDK individual Notificaciones, puede que también necesite agregar un nuevo receptor de difusión.