Para variar el primer tutorial de esta serie, "Programar para iOS 4", sera el famoso Hola Mundo!
Lo primero que haremos sera crear un nuevo proyecto. Nos aparecera una ventana para seleccionar que tipo de aplicación crearemos. En esa ventana seleccionaremos View-based Application y daremos clic en siguiente.
A continuación nos pedira el nombre del proyecto y para que dispositivo vamos a desarrollar. Para este ejemplo ingresaremos Hello World, seleccionamos iPhone como el dispositivo y presionamos siguiente. Posteriormente decidimos la ruta donde vamos a guardar el proyecto y presionamos el boton create.
Una vez creado el proyecto, Xcode nos mostrara en la parte izquierda de la pantalla los distintos archivos que componen nuestro proyecto.
Para este ejemplo, solo agregaremos una etiqueta en la pantalla que diga "Hola Mundo!". Para hacer esto, primero daremos clic sobre el archivo Hello_WorldViewController.xib. Una vez hecho esto aparecera la siguiente pantalla:
Si por alguna razón no aparece el panel de la libreria de objetos, situado en la parte derecha de la pantalla, es posible obtenerla mediante el menu View -> Utilities -> Object Library
El primer objeto de la libreria de objetos es Label. Vamos a dar clic sobre el, y sin soltarlo, arrastrarlo al rectángulo gris, el cual es la ventana o vista de nuestra aplicación. Al momento de arrastrarlo sobre la vista, aparecen ciertas lineas de ayuda para saber donde y como centrar el objeto. Lo siguiente sera dar doble clic sobre el objeto Label que acabamos de colocar en la vista y cambiar su valor por el de Hola Mundo!.
Al cambiar de longitud el objeto, ya no queda centrado, por lo cual es necesario volver a acomodarlo a nuestro gusto. Lo siguiente es dar clic en el boton Run en la parte superior izquierda de la ventana de Xcode. Esto abrira el simulador y automaticamente abrira la aplicación que hemos creado.
Para este ejemplo, como vieron, no fue necesario ingresar ni una linea de código! Sin embargo no es de mucha utilidad, por lo que en las siguientes entradas iremos viendo cosas mejores.
domingo, 19 de junio de 2011
Programar para iOS 4 - Hola Mundo!
Etiquetas:
iOS,
iPhone,
Objective-C
Programar para iOS 4 - Introducción
Desde que compre el iPhone 3G, en Agosto de 2008, algo que realmente queria hacer era aprender a programar en objective-C. Sin embargo por cosas del trabajo y de la facultad nunca me hice el tiempo para empezar.
Ahora me he dado el tiempo de intentar aprender objective-c para iOS y el libro con el que empezare es el siguiente: Beginning iPhone 4 Development: Exploring the iOS SDK. Aunque en el libro utilizan una version anterior, para la serie de tutoriales que iremos viendo utilizaremos Xcode 4.
Ahora me he dado el tiempo de intentar aprender objective-c para iOS y el libro con el que empezare es el siguiente: Beginning iPhone 4 Development: Exploring the iOS SDK. Aunque en el libro utilizan una version anterior, para la serie de tutoriales que iremos viendo utilizaremos Xcode 4.
Etiquetas:
iOS,
iPhone,
Objective-C
lunes, 21 de febrero de 2011
Wifi Sync Causa Errores al Restaurar el iPhone!
Hoy quiero comentarles lo que me tuvo ocupado por varias horas, hasta que después de leer e intentar muchas cosas pude restaurar el iPhone.
Todo empezó cuando quise instalar whited00r a un iPhone 3G. Lo primero que hice fue poner el iPhone en modo DFU y después abrí el iTunes y presioné shift + Restaurar para seleccionar el custom firmware de whited00r. Hasta ahí todo bien, sin embargo al empezar a instalar se empezó a tardar mas de lo normal y después marcó un error. El error era el 1611. Al buscar el Apple acerca de este error decía que se trataba de un error en el hardware del iPhone, lo cual me causó un poco de temor ya que el iPhone no era mio.
Sin embargo despues de leer por varios foros encontre varias soluciones, de las cuales intenté las siguientes:
Primero leí que con iReb podía hacer que dejaran de aparecer estos errores, por lo que lo descargue y lo corrí enseguida. Al intentar correrlo, me generaba un error y me decía que la aplicación se cerraría.
Después me entere que hacia salido una nueva versión de iReb, la RC3. Lo volví a intentar y esta vez al correr iReb no genero ningun error, sin embargo al poner el iPhone a restaurar se quedaba "colgado". No marcaba ningún error pero no terminaba de restaurar.
Para este momento ya estaba un poco desesperado y pense que tal vez ya no podria restaurar el iPhone. Empece a buscar para ver si a alguien mas le pasaba lo mismo y me tope con un blog en el cual un usuario mencionaba que el problema podía ser la aplicación WiFi Sync.
Desinstale la aplicación, reinicié la computadora y restaure el iPhone sin ningún problema. No se si esto funcione para alguien mas, pero para mi caso esa aplicación era la que estaba causando que la restauración no se completara.
Todo empezó cuando quise instalar whited00r a un iPhone 3G. Lo primero que hice fue poner el iPhone en modo DFU y después abrí el iTunes y presioné shift + Restaurar para seleccionar el custom firmware de whited00r. Hasta ahí todo bien, sin embargo al empezar a instalar se empezó a tardar mas de lo normal y después marcó un error. El error era el 1611. Al buscar el Apple acerca de este error decía que se trataba de un error en el hardware del iPhone, lo cual me causó un poco de temor ya que el iPhone no era mio.
Sin embargo despues de leer por varios foros encontre varias soluciones, de las cuales intenté las siguientes:
Primero leí que con iReb podía hacer que dejaran de aparecer estos errores, por lo que lo descargue y lo corrí enseguida. Al intentar correrlo, me generaba un error y me decía que la aplicación se cerraría.
Después me entere que hacia salido una nueva versión de iReb, la RC3. Lo volví a intentar y esta vez al correr iReb no genero ningun error, sin embargo al poner el iPhone a restaurar se quedaba "colgado". No marcaba ningún error pero no terminaba de restaurar.
Para este momento ya estaba un poco desesperado y pense que tal vez ya no podria restaurar el iPhone. Empece a buscar para ver si a alguien mas le pasaba lo mismo y me tope con un blog en el cual un usuario mencionaba que el problema podía ser la aplicación WiFi Sync.
Desinstale la aplicación, reinicié la computadora y restaure el iPhone sin ningún problema. No se si esto funcione para alguien mas, pero para mi caso esa aplicación era la que estaba causando que la restauración no se completara.
domingo, 30 de enero de 2011
jQuery deshabilita el hotlinking
A partir de mañana 31 de enero de 2011 jQuery dejará de soportar el hotlinking a sus archivos. Por tal razón todos los que usemos la dirección directa a jquery.com para obtener la librería nos veremos afectados.
Lo que necesitamos revisar es que no incluyamos los archivos de la siguiente manera:
<script type="text/javascript" src="http://www.jquery.com/..."> </script>
Para garantizar que nuestras páginas no se verán afectadas por este cambio, debemos cerciorarnos de que estemos utilizando una copia local de jquery o que utilicemos uno de los diferentes CDN's que nos proporcionan ya sea google, microsoft o el mismo jquery.
Aquí esta la lista de los CDN's(Content Delivery Network) que podemos utilizar:
Google Ajax API CDN
https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
Microsoft CDN
http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js
jQuery CDN (via Media Temple)
http://code.jquery.com/jquery-1.4.4.min.js
jueves, 13 de enero de 2011
Crear un script PHP que envie Notificaciones Push utilizando Notifo
Hoy estuve trabajando en un mini proyecto para poder mandar notificaciones push a nuestro iphone utilizando php y alguna aplicación para el iPhone. De esta manera podemos mandar alertas de nuestros servidores o de nuestras aplicaciones web directamente a nuestro smartphone.
Esta idea surgió ya que necesitaba mandar alertas al smartphone cuando algún cliente registrará un ticket con alguna solicitud de servicio y debido a que el iPhone es el smartphone mas utilizado en mi lugar de trabajo decidí utilizar algo que funcionará en él.
Despues de realizar una búsqueda exhaustiva en google, encontré 3 aplicaciones para realizar esta tarea, estas fueron: pushme.to, boxcar y notifo.
La primera aplicación que probé fue la de pushme.to y la verdad resultó ser la mas sencilla aunque no me convencía del todo ya que para utilizarla debíamos ademas de tenerla la aplicación instalada en nuestro iPhone y haber creado una cuenta, necesitábamos extraer una url utilizada en un iframe que pushme.to utiliza para poder embeber su widget en alguna pagina que queramos. No voy a explicar como se utiliza ya que eso lo podemos encontrar en la siguiente dirección si asi lo queremos:
www.barattalo.it
La segunda aplicación que utilice fue boxcar. Esta aplicación cuenta con un api que explica como enviar notificaciones push, sin embargo en la sección de foros de ayuda de la página encontré una clase en php que simplificaba aun mas las cosas. Con la ayuda obtenida ahí pude hacer funcionar el envío de notificaciones, lo único necesario fue modificar la clase con los datos de mi cuenta, instalar la aplicación en mi iPhone y por último activar el servicio growl desde la aplicación. En general la aplicación trabaja bastante bien y no es nada difícil configurarla, el motivo por el cual no me decidí a utilizarla fue que no pude hacer funcionar que al momento de desbloquear el iPhone y "ver" la notificación no era posible abrir una página web. Aqui les dejo los links por si quieren echarle un vistazo:
boxcar.io
boxcar PHP class
Por último decidí probar la api de notifo. Esta aplicación cuenta con una api muy bien explicada ademas de contar con dos formas de utilizar sus servicios. La primera opción es crear una cuanta de usuario, la cual solo permite enviar notificaciones a ti mismo y otra que te permite crear una cuenta para servicio, con un límite de 10,000 notificaciones al mes gratis.
Para el ejemplo propuesto aquí utilizaremos la cuenta de usuario, para ello es necesario crear una cuenta en notifo.com.
Las credenciales que utilizaremos para autentificarnos desde nuestra aplicación será nuestro nombre de usuario y nuestra "API Secret" que podremos encontrar en la sección Settings.
El link de descarga de las librerías para utilizar la api las podemos encontrar aquí. Cuenta con librerias para PHP, Python, .NET, ColdFusion y Ruby.
A continuación les dejo el código del script que envía la notificación...
y de la clase que hace uso de la api:
Link de descarga de la aplicacion notifo.
Ejemplo de la notificación push:
Esta idea surgió ya que necesitaba mandar alertas al smartphone cuando algún cliente registrará un ticket con alguna solicitud de servicio y debido a que el iPhone es el smartphone mas utilizado en mi lugar de trabajo decidí utilizar algo que funcionará en él.
Despues de realizar una búsqueda exhaustiva en google, encontré 3 aplicaciones para realizar esta tarea, estas fueron: pushme.to, boxcar y notifo.
La primera aplicación que probé fue la de pushme.to y la verdad resultó ser la mas sencilla aunque no me convencía del todo ya que para utilizarla debíamos ademas de tenerla la aplicación instalada en nuestro iPhone y haber creado una cuenta, necesitábamos extraer una url utilizada en un iframe que pushme.to utiliza para poder embeber su widget en alguna pagina que queramos. No voy a explicar como se utiliza ya que eso lo podemos encontrar en la siguiente dirección si asi lo queremos:
www.barattalo.it
La segunda aplicación que utilice fue boxcar. Esta aplicación cuenta con un api que explica como enviar notificaciones push, sin embargo en la sección de foros de ayuda de la página encontré una clase en php que simplificaba aun mas las cosas. Con la ayuda obtenida ahí pude hacer funcionar el envío de notificaciones, lo único necesario fue modificar la clase con los datos de mi cuenta, instalar la aplicación en mi iPhone y por último activar el servicio growl desde la aplicación. En general la aplicación trabaja bastante bien y no es nada difícil configurarla, el motivo por el cual no me decidí a utilizarla fue que no pude hacer funcionar que al momento de desbloquear el iPhone y "ver" la notificación no era posible abrir una página web. Aqui les dejo los links por si quieren echarle un vistazo:
boxcar.io
boxcar PHP class
Por último decidí probar la api de notifo. Esta aplicación cuenta con una api muy bien explicada ademas de contar con dos formas de utilizar sus servicios. La primera opción es crear una cuanta de usuario, la cual solo permite enviar notificaciones a ti mismo y otra que te permite crear una cuenta para servicio, con un límite de 10,000 notificaciones al mes gratis.
Para el ejemplo propuesto aquí utilizaremos la cuenta de usuario, para ello es necesario crear una cuenta en notifo.com.
Las credenciales que utilizaremos para autentificarnos desde nuestra aplicación será nuestro nombre de usuario y nuestra "API Secret" que podremos encontrar en la sección Settings.
El link de descarga de las librerías para utilizar la api las podemos encontrar aquí. Cuenta con librerias para PHP, Python, .NET, ColdFusion y Ruby.
A continuación les dejo el código del script que envía la notificación...
<?php
/* incluye el archivo Notifo_API */
require("Notifo_API.php");
/* crea un nuevo objeto "notifo" */
$notifo = new Notifo_API("nombreDeUsuario", "apiSecret");
/* establece los parámetros de la notificación */
$params = array("to"=>"nombreDeUsuario",
"label"=>"NotificaciónPHP",
"title"=>"Titulo del Mensaje",
"msg"=>"Aquí va el mensaje de prueba de la notificación.",
"uri"=>"http://www.google.com");
/* envía la notificación! */
$response = $notifo->send_notification($params);
/* hacer uso de la respuesta */
print_r($response);
/* ... */
?>
y de la clase que hace uso de la api:
<?php
class Notifo_API {
const API_ROOT = 'https://api.notifo.com/';
const API_VER = 'v1';
protected $apiUsername;
protected $apiSecret;
/**
* class constructor
*/
function __construct($apiUsername, $apiSecret) {
$this->apiUsername = $apiUsername;
$this->apiSecret = $apiSecret;
}
function set_apiusername($val) {
$this->apiUsername = $val;
}
function set_apisecret($val) {
$this->apiSecret = $val;
}
/**
* function: sendNotification
* @param: $params - an associative array of parameters to send to the Notifo API.
* These can be any of the following:
* to, msg, label, title, uri
* See https://api.notifo.com/ for more information
*/
function sendNotification($params) {
$validFields = array('to', 'msg', 'label', 'title', 'uri');
$params = array_intersect_key($params, array_flip($validFields));
return $this->sendRequest('send_notification', 'POST', $params);
} /* end function sendNotification */
function sendMessage($params) {
$validFields = array('to','msg');
$params = array_intersect_key($params, array_flip($validFields));
return $this->sendRequest('send_message', 'POST', $params);
}
/**
* function: subscribeUser
* @param: $username - the username to subscribe to your Notifo service
* See https://api.notifo.com/ for more information
*/
function subscribeUser($username) {
return $this->sendRequest('subscribe_user', 'POST', array('username' => $username));
} /* end function subscribeUser */
/**
* helper function to send the requests
* @param $method - name of remote method to call
* @param $type - HTTP method (GET, POST, etc)
* @param $data - array with arguments for remote method
*/
function sendRequest($method, $type, $data) {
$url = self::API_ROOT.self::API_VER.'/'.$method;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if ($type == "POST") {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($ch, CURLOPT_USERPWD, $this->apiUsername.':'.$this->apiSecret);
curl_setopt($ch, CURLOPT_HEADER, false);
/*
* if you are on a shared host or do not have access to install
* the root CA certificates on your server, uncomment the next
* two lines or the curl_exec call may fail with null
*/
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$result = curl_exec($ch);
$result = json_decode($result, true);
return $result;
} /* end function sendRequest */
// for backwards compatibility
function send_notification($params) { return json_encode($this->sendNotification($params)); }
function send_message($params) { return json_encode($this->sendMessage($params)); }
function subscribe_user($username) { return json_encode($this->subscribeUser($username)); }
function send_request($url, $type, $data) { return json_encode($this->sendRequest($method, $type, $data)); }
} /* end class Notifo_API */
?>
Link de descarga de la aplicacion notifo.
Ejemplo de la notificación push:
Etiquetas:
iPhone,
PHP,
Push Notifications
lunes, 3 de enero de 2011
Crear URLs mas profesionales para nuestras Aplicaciones Web
Quiero compartir algo que no se si sea de mucha utilidad pero si que da una mejor presentación a nuestras aplicaciones web.
Para este ejemplo usaremos php pero es posible realizarlo con cualquier otro lenguaje de programación para desarrollar en la web.
El objetivo de este post es ocultar la tecnología que utilizamos al usuario final. En lugar de utilizar una url así:
cambiarla por una url asi:
Aunque es posible realizar ésto de varias formas, para mi la manera mas sencilla, ya sea por no tener acceso a la configuración del servidor donde hospedamos la aplicación o por que no queremos batallar con dicha configuración, es la siguiente:
Si partimos de que tenemos nuestro proyecto en nuestro servidor local (yo utilizo xampp) llamado "ejemplo", con el archivo "ejemplo.php". La dirección url quedaría de la siguiente manera:
Lo que tenemos que hacer para lograr "ocultar" la extensión del archivo es simple. Primero creamos una carpeta en el lugar donde se encuentra el archivo ejemplo.php con el nombre "ejemplo" y despues metemos dentro de ésta carpeta el archivo ejemplo.php. Para finalizar, es necesario cambiar el nombre del archivo ejemplo.php por index.php, de esta manera podemos realizar lo siguiente para acceder a éste archivo:
De esta manera evitamos mostrarle al usuario final la tecnología utilizada y al mismo tiempo damos mayor presentación a nuestras aplicaciones.
Para este ejemplo usaremos php pero es posible realizarlo con cualquier otro lenguaje de programación para desarrollar en la web.
El objetivo de este post es ocultar la tecnología que utilizamos al usuario final. En lugar de utilizar una url así:
www.dominio.com/ejemplo.phpcambiarla por una url asi:
www.dominio.com/ejemplo/Aunque es posible realizar ésto de varias formas, para mi la manera mas sencilla, ya sea por no tener acceso a la configuración del servidor donde hospedamos la aplicación o por que no queremos batallar con dicha configuración, es la siguiente:
Si partimos de que tenemos nuestro proyecto en nuestro servidor local (yo utilizo xampp) llamado "ejemplo", con el archivo "ejemplo.php". La dirección url quedaría de la siguiente manera:
http://localhost/ejemplo/ejemplo.phpLo que tenemos que hacer para lograr "ocultar" la extensión del archivo es simple. Primero creamos una carpeta en el lugar donde se encuentra el archivo ejemplo.php con el nombre "ejemplo" y despues metemos dentro de ésta carpeta el archivo ejemplo.php. Para finalizar, es necesario cambiar el nombre del archivo ejemplo.php por index.php, de esta manera podemos realizar lo siguiente para acceder a éste archivo:
http://localhost/ejemplo/ejemplo/De esta manera evitamos mostrarle al usuario final la tecnología utilizada y al mismo tiempo damos mayor presentación a nuestras aplicaciones.
Primer post del año!
Después de casi dos años sin publicar nada debido a falta de tiempo, ahora que salí de la facultad he decidido volver a las andadas del blogger!
Aquí publicaré noticias acerca de temas variados como código PHP, noticias acerca del iPhone y cualquier otra cosa que crea relevante.
Aquí publicaré noticias acerca de temas variados como código PHP, noticias acerca del iPhone y cualquier otra cosa que crea relevante.
Suscribirse a:
Entradas (Atom)









