Desarrollo iOS: Cómo utilizar Dropbox en nuestras aplicaciones, parte 1, por Angel Traversi

Durante años hemos utilizado Dropbox como un repositorio en la nube que se sincroniza contra nuestro Mac. Realmente es una herramienta muy simple para compartir archivos. Con el advenimiento del iPhone y demás dispositivos móviles, los desarrolladores pedíamos a gritos la posibilidad de usar “la nube de Dropbox” desde nuestras aplicaciones. Imagino que presionados por la salida de iCloud y otras soluciones de sincronización con Internet, finalmente Dropbox se puso a trabajar en este sentido y el mes pasado liberó el primer release de su API para integración con apps.

Si bien me voy a centrar en el uso desde iOS, les aclaro que el API de Dropbox es REST y puede ser usado “directamente” por cualquier plataforma y sin intermediar con ningún framework, salvo alguno de JSON para procesar las respuestas.

En el presente artículo, voy a utilizar el DropboxSDK.framework, la forma más simple de usar Dropbox desde iOS.

A lo nuestro

Lo primero que debemos hacer es registrarnos en el sitio de desarrollo y bajar el SDK de iOS.

Por temas de seguridad, para utilizar el SDK se requiere el registro en Dropbox de las aplicaciones que desarrollemos. ¿Por qué registrar? Es que cada App dispone de una clave y datos de seguridad que la hacen única. Además, según el uso que hagamos del servicio, Dropbox tendrá que “aprobar” la aplicación para que esta funcione.

Al momento de registrar la App debemos definir el “tipos de acceso”:

  • La app usa un folder específico (que le es propio) de Dropbox. Se pueden crear subcarpetas. El contenido no se comparte con otras aplicaciones (otro AppID), pero si se accede desde cualquier ordenador.
  • La app usa todo Dropbox.

 

El segundo tipo va a requerir de una justificación de porqué queremos acceder a todo Dropbox. Y en ambos casos, la aprobación mencionada anteriormente.

Para nuestra prueba elegimos el primer caso, que alcanza a nuestro propósito.

Hecho el registro obtendremos dos strings fundamentales para comunicarnos con el servicio: un AppID y un AppSecret. La aplicación registrada arranca en un status de development que permite ejecutar la app en nuestra cuenta de Dropbox. Una vez terminada la aplicación, debemos publicarla. Aquí pasa al estado de producción, en el cual enviamos la app a Dropbox para que la apruebe. Una vez aprobada, la app se puede usar en cualquier cuenta Dropbox.

La primer aplicación

El SDK trae un template de aplicación, un cascarón que sirve para iniciarse en el uso de Dropbox. Sin embargo, yo prefiero escribir el ejemplo desde cero, para hacerlo mas didáctico. Hagamos una app parecida a la oficial de Dropbox: ver los archivos en una lista, y el contenido de ellos en una vista de detalle. Ya se que no es muy inspirador, pero es suficiente para conocer el alcance de la API. Comencemos.

Creamos en XCode una aplicación Master-Detail para iPhone. Incluimos la librería DropboxSDK.framework (presente en el paquete que descargamos). Luego incluimos la librería Security.framework que se requiere para la autenticación con el servicio. Ya podemos compilar y ejecutarse, no deberíamos tener el menor problema.

Llegó el momento de escribir código. Lo primero es autenticarnos con el servicio. Este yo diría que es un proceso híbrido, parte la hacemos en la app y otra parte desde el sitio de DropBox. Es que primero debemos crear una instancia de la clase DBSession con los parámetros de AppKey y AppSecret y luego pasarle la posta a Dropbox para que haga el login desde su sitio. Entonces:

 

  • Creamos la instancia de DBSession en el didFinishLaunchingWithOptions del delegate de la app:

DBSession* dbSession =
[[[DBSession alloc]
initWithAppKey:@"APP_KEY"
appSecret:@"APP_SECRET"
root:ACCESS_TYPE] // usar kDBRootAppFolder o kDBRootDropbox
autorelease];
[DBSession setSharedSession:dbSession];
Lanzamos la ventana de login. Esto lo podemos hacer al presionar un botón creado a tal efecto. Yo por simplicidad, lo puse seguido del código anterior:
if (![[DBSession sharedSession] isLinked]) {
[[DBSession sharedSession] link];
}

 

  • A continuación completamos en el plist (lo editamos como Source Code, para mayor facilidad), y agregamos las siguientes lineas dentro de la etiqueta <dict>

 

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>db-APP_KEY</string>
</array>
</dict>
</array>

Recuerden reemplazar el AppKey y el AppSecret en el DBSession y en el plist. Ya podemos compilar y ejecutar, debería aparecer la ventana de login de Dropbox (verán que cambia a Safari) y una vez ingresada clave y contraseña, vuelve a nuestra app.

Y ahora es cuando se pone más interesante.

La clase que hace la magia de conectarnos con la nube de Dropbox es la DBRestClient que cuenta con los siguiente métodos:

 

  • loadMetadata, que enumera los archivos de una carpeta
  • uploadFile, que permite subir un archivo a la nube
  • loadFile, que permite descargar un archivo a nuestro dispositivo

 

En la próxima entrega veremos el uso de estas APIs. Hasta la próxima!

Un artículo de Angel Traversi

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x