Nuestras noticias en tu móvil

Prueba nuestra nueva app para Android e IOs Podras ver todas las noticias, eventos y todas nuestras actualizaciones
  

Suscribete en nuestro Newsletter

Regístrate en nuestro Newsletter para estar al tanto de las noticias, talleres y podcast que tendremos próximamente
Suscríbete aqui

Foto del autor Osledy Bazo

React Native y AirBnB Google Maps

En este post explicare como integrar Google Maps a tus aplicaciones React Native, ya que me he encontrado que la instalación por defecto genera muchos errores y react-native no termina de reconocer la librería de Google Maps.

Después de estar aproximadamente 1 semana intentando integrar la librería de AirBnB de Google Maps a una aplicación he llegado a una serie de pasos fáciles de seguir.

Creación del proyecto React Native e instalación de librería AirBnB Google Maps

Primero creamos nuestra app en React Native, nuestra app se llamará myMapApp

                    > react-native init myMapApp
                    > cd myMapApp

Ahora instalamos la librería para Google Maps de AirBnB

                    > npm install --save react-native-maps

Enlazamos la librería con React Native

                    > npm install
                    > react-native link react-native-maps

En teoría ya nuestra app debería funcionar con los mapas por defecto de cada plataforma Maps en iOS y Maps en Android. Pero si queremos usar Google Maps en ambas plataformas tendremos que hacer algunos pasos adicionales:

Antes de comenzar a trabajar en la app vamos a generar la clave de Api (Api Key) de Google Maps para que usemos en nuestro proyecto

Crear la clave API de Google Maps

Iremos a la consola de Google para desarrolladores

Crearemos un nuevo proyecto

Y agregaremos una api en nuestro caso Google Maps SDK for iOS y Google Maps SDK for Android

Ahora nos iremos al menú de la izquierda en Credenciales. Y crearemos nuestra API Key, la guardaremos para mas adelante

Enlace de AirBnB Google Maps para iOS

Instalar Cocoapods (si lo tenemos podemos saltar este paso)

                      sudo gem install cocoapods

Configurar el proyecto para iOS

                      cd ios
                      pod init

Esto genera un archivo Podfile en nuestra, lo abriremos y editaremos su contenido

                      # Uncomment the next line to define a global platform for your project
                      platform :ios, '9.0'
                
                      target 'myMapApp' do
                        # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
                        # use_frameworks!
                
                        # Pods for myMapApp
                
                        target 'myMapApp-tvOSTests' do
                          inherit! :search_paths
                          # Pods for testing
                        end
                
                        target 'myMapAppTests' do
                          inherit! :search_paths
                          # Pods for testing
                        end
                
                        react_native_path = "../node_modules/react-native"
                        pod "yoga", :path => "#{react_native_path}/ReactCommon/yoga"
                        pod "React", :path => react_native_path
                
                        pod 'GoogleMaps'
                
                      end

Recuerda reemplazar el nombre de tu aplicación donde dice target

Y no te olvides de especificar la plataforma de iOS que utilizaras

Si recibes este error:

                      [!] The name of the given podspec `yoga` doesn't match the expected one `Yoga`

Cambia la linea de este modo (yoga en minúscula):

                      pod "yoga", :path => "#{react_native_path}/ReactCommon/yoga"

Ahora en la terminal

                      pod install

Al hacer esto se generara un nuevo proyecto en nuestra carpeta de iOS, lo abriremos con XCode

                      open myMapApp.xcworkspace

Y copiamos la carpeta AirGoogleMaps que se encuentra dentro de /node_modules/react-native-maps/lib/ios al proyecto xcworkspace que tenemos abierto en el Xcode.

Quedando de esta forma

Para usar las credenciales API abrimos el archivo AppDelegate.m en Xcode

                    #import "AppDelegate.h"
                
                    #import <React/RCTBundleURLProvider.h>
                    #import <React/RCTRootView.h>
                    @import GoogleMaps;
                    @implementation AppDelegate
                
                    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
                    {
                      NSURL *jsCodeLocation;
                      [GMSServices provideAPIKey:@"YOUR_GOOGLE_API_KEY"];
                      jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
                
                      RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                                          moduleName:@"myMapApp"
                                                                  initialProperties:nil
                                                                      launchOptions:launchOptions];
                      rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
                
                      self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
                      UIViewController *rootViewController = [UIViewController new];
                      rootViewController.view = rootView;
                      self.window.rootViewController = rootViewController;
                      [self.window makeKeyAndVisible];
                      return YES;
                    }
                
                    @end

Ahora iremos a Product -> Clean y luego Product -> Build para ejecutar nuestra aplicación.

Enlace de AirBnB Google Maps para Android

En nuestro proyecto debemos editar el archivo android/app/build.gradle

                    dependencies {
                      ...
                      // Paste these line
                      compile(project(':react-native-maps')){
                          exclude group: 'com.google.android.gms', module: 'play-services-base'
                          exclude group: 'com.google.android.gms', module: 'play-services-maps'
                      }
                      compile 'com.google.android.gms:play-services-base:10.0.1'
                      compile 'com.google.android.gms:play-services-maps:10.0.1'
                    }

Y también debemos agregar nuestra Api Key en Android/app/src/AndroidManifest.xml

                    <application>
                        <!-- You will only need to add this meta-data tag, but make sure it's a child of application -->
                        <meta-data
                          android:name="com.google.android.geo.API_KEY"
                          android:value="YOUR GOOGLE MAPS API KEY HERE"/>
                    </application>

Con esto ya tenemos nuestro proyecto React Native configurado en iOS y Android con Google Maps, ahora actualizamos el archivo App.js en nuestro proyecto React Native para incluir el Mapa

                  import React, { Component } from 'react';
                  import {
                    StyleSheet,
                    Text,
                    View
                  } from 'react-native';
                  import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
                
                  const styles = StyleSheet.create({
                    container: {
                      ...StyleSheet.absoluteFillObject,
                      height: 400,
                      width: 400,
                      justifyContent: 'flex-end',
                      alignItems: 'center',
                    },
                    map: {
                      ...StyleSheet.absoluteFillObject,
                    },
                  });
                
                  export default class App extends Component {
                    render() {
                      const { region } = this.props;
                      console.log(region);
                
                      return (
                        <View style ={styles.container}>
                          <MapView
                            provider={PROVIDER_GOOGLE}
                            style={styles.map}
                            region={{
                              latitude: 37.78825,
                              longitude: -122.4324,
                              latitudeDelta: 0.015,
                              longitudeDelta: 0.0121,
                            }}
                          >
                          </MapView>
                        </View>
                      );
                    }
                  }
Foto del autor Osledy Bazo

Evento Industrias Creativas 2017

Seis especialistas venezolanos + un británico te contarán cómo se iniciaron en el mundo de los videojuegos y el desarrollo de aplicaciones, cuáles son las mejores prácticas en el área y te aconsejarán sobre cómo iniciarte en esta industria en crecimiento.

Manténte alerta, que la segunda semana de noviembre enviaremos en enlace a la planilla de inscripción para que asegures tu cupo, TOTALMENTE GRATIS. Te animamos a compartir esta información con tus amigos y compañeros.

Mas información: http://industrias-creativas.com

Foto del autor Osledy Bazo

Evento X JOINCIC - Las Jornadas Interuniversitarias de Ciencias de la Computación

Las Jornadas Interuniversitarias de Ciencias de la Computación (JOINCIC), surgen en el año 2008 como resultado de la sinergia y el trabajo en conjunto de los estudiantes de la Universidad Católica Andrés Bello y la Universidad Simón Bolívar. Es un evento organizado exclusivamente por estudiantes con el propósito de reunir a destacados profesionales de todas las ramas de las ciencias de la computación, para intercambiar conocimientos e innovaciones de dicha área entre profesionales, empresarios y estudiantes.

Mas información: https://www.facebook.com/events/310123819453505/

Foto del autor Osledy Bazo

Startup Weekend Maracay 2017

Startup Weekend Maracay, en su segunda edición, forma parte del gran movimiento mundial que invita a creativos e innovadores estudiantes y profesionales a construir una idea en una startup en el área de tecnología, con el reto de presentarla en 54 horas de su creación.

Un encuentro que te permite acelerar al máximo tu ingenio y de interactuar con un grupo variado de personas en cualquier especialización. La ciudad jardín de Venezuela prepara sus espacios para recibirlos desde el viernes 27 de octubre, hasta lograr el domingo 29 por la noche, presentar el proyecto final del startup. Durante esta gran experiencia, los participantes son guiados y asesorados por mentores de reconocida experiencia, además de ser evaluados por un jurado de alto nivel. El epicentro de esta actividad será una vez más en las instalaciones de la Cámara de Industriales del estado Aragua.

¿Sabes qué especialidades son afines para integrar una startup? ¡TODAS! Por eso, estamos buscando emprendedores, especialistas en mercadeo, diseñadores, programadores, en definitiva, profesionales y estudiantes en distintas áreas que quieran aprender a crear startups.

Debes saber que tu participación en el evento incluye: certificado de participación, mentoría, alimentación, e hidratación durante los tres días. ¡Es tiempo de crear el futuro que imaginas!

Inscríbete al completar tus datos en el formulario que te muestra el botón "Comprar entradas".

¡Los cupos son limitados! ¡Rápido aprovecha nuestra primera pre-venta hasta el 1ro de Octubre!

Importante: Startup Weekend no es el espacio para conseguir inversión con proyectos ya desarrollados ni para promocionar tu empresa ya constituida.

Mas información e inscripción en el siguiente enlace: http://communities.techstars.com/venezuela/maracay/startup-weekend/11371

Foto del autor Osledy Bazo

Ejemplos del uso del teclado en React-Native para iPhone y Android

Según la documentación de Facebook para el componente de Teclado tenemos disponibles varios eventos para interactuar con el teclado de nuestra aplicación. https://facebook.github.io/react-native/docs/keyboard.html

Comencemos con un ejemplo de app básica donde sólo mostraremos una caja de texto para ingresar texto y un párrafo para indicar el estado del teclado, si está activo o no.

Si te has dado cuenta, al tocar el input puedes escribir cualquier texto, pero luego al tocar la pantalla fuera de la caja de texto, el teclado no se esconde.

Para solucionar esto debemos usar otro componente llamado 'TouchableWithoutFeedback'

https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html

Te recomiendo leas la documentación sobre este componente ya que debe usarse con cuidado.

Modificaremos nuestro código para incluir el modulo del teclado 'Keyboard' y de 'TouchableWithoutFeedback'. También agregaremos este nuevo componente alrededor de nuestro View principal y usaremos 'onPress={Keyboard.dismiss}' para esconder el teclado una vez tocado la pantalla fuera de la caja de texto.

Para acceder a los estados del teclado tenemos que usarlo en combinacion con un Event Listener que conectará con un evento nativo, puede ser identificado con alguno de estos strings:

  • keyboardWillShow (IOS)
  • keyboardWillHide (IOS)
  • keyboardDidShow (Android)
  • keyboardDidHide (Android)
  • keyboardWillChangeFrame
  • keyboardDidChangeFrame

Modificaremos nuestra app y agregaremos métodos para estar atentos al cambio del teclado.

Usare los strings 'keyboardDidShow' y 'keyboardDidHide' ya que en funcionan tanto en Android como en IOS. ('keyboardWillShow' y 'keyboardWillHide' no tienen representación nativa en Android).

Ademas de agregar los EventListener tenemos que recordar que hay que removerlos, esto para prevenir memory leaks y problemas de rendimiento en nuestra aplicación.

Ahora cambiaremos el estado de nuestro status a un string que indica si el teclado esta activo o inactivo.

En los eventos del keyboard podemos acceder a algunas de sus propiedades como son:

                { 
                  endCoordinates: { 
                  screenY: 442, 
                  screenX: 0, 
                  width: 375, 
                  height: 225 
                },
                  startCoordinates: { 
                  screenY: 451, 
                  screenX: 0, 
                  width: 375, 
                  height: 216 
                },
                  duration: 250 
                }
                

Hay un ultimo problema que es muy común a la hora de trabajar con el teclado en una aplicación y es que a veces el teclado puede tapar parte del contenido de nuestra app:

Para solucionarlo debemos usar el componente 'KeyboardAvoidingView', este componente esta diseñado para ajustar o mover lo que se ve en la pantalla automaticamente para que el teclado no estorbe.

https://facebook.github.io/react-native/docs/keyboardavoidingview.html

Hay tres formas para hacer esto automaticamente y la que uses dependerá de los resultados que quieras mostrar. Presta atención a la propiedad 'keyboardVerticalOffset' que sirve para guardar una distancia entre la vista y el teclado. Para esto tendremos que modificar un poco nuestro código así:

Foto del autor Osledy Bazo

Coders Venezuela Newsletter #1

Hola! Hola! Coders, esta es la newsletter de Coders Venezuela, tenemos mas de 1800 suscriptores al momento, unos cuantos ¿no?.

Esta lista está en modo de pruebas, queremos ver cuales son los enlaces y temas que mas les interesa, por favor, corran la voz sobre la lista ya que pronto tendremos una encuesta sobre Programadores en Venezuela, queremos saber donde están y sus intereses para hacer una mejor comunidad.

Recuerda que puedes enviarnos enlaces de recomendaciones, proyectos o saludos a [email protected]

Puedes suscribirte dejando tu email en la barra de arriba de nuestra página

LINKS

EVENTOS

Seminario Industrias Creativas Videojuegos y Apps
Junio 29-30, 2017
Torre BOD La Castellana, Caracas

COMUNIDADES

Foto del autor Osledy Bazo

Evento: Industrias Creativas

La quinta edición de Industrias Creativas es sobre Videojuegos y Aplicaciones. En tres días tendremos un taller con un invitado internacional y dos medios días de seminario con ocho ponentes de lujo, gracias al apoyo del British Council y Pase de Prensa BOD. El evento se realizará totalmente GRATIS en el PH de la Torre BOD La Castellana. En mayo se abrirán los registros online. Invitamos a los interesados en obtener directamente la planilla de inscripción a registrarse en el boletín en seminarioindustriascreativas.blogspot.com

Foto del autor Osledy Bazo

Gaming Analytics with Firebase

In this talk Abe Haskins dives into the advantages of using Firebase Analytics to report user behaviour in your mobile games. He’ll cover how Firebase Analytics increases your ability to create actionable insights for your games which improve player retention and player satisfaction. He’ll also touch on expanding Firebase’s functionality with Google Cloud’s BigQuery and Data Studio.