Archive for the ‘ Tips ’ Category

Como activar iTunes FileSharing en AIR para iOS Devices

He estado buscando por la red la manera de activar la compartición de ficheros con mi aplicación mediante iTunes.

Al final y despues de buscar bastante, he dado con la solución que es extremadamente sencilla.

  • Editamos el fichero xml descriptor de nuestra app
  • Dentro de la sección InfoAdditions añadiremos las 2 lineas de codigo que teneis un poco más abajo
  • Reempaquetamos nuestro proyecto y lo actualizamos en iTunes
  • Después de sincronizar via iTunes, veremos que nuestra app ahora aparece en el listado de aplicaciones que permiten la compartición de documentos
1
2
<key>UIFileSharingEnabled</key>
<true/>

Disfrutad!!

Inyectando xml con formato dentro de javascript

A veces estaria bien poder definir un xml en javascript de la siguiente manera:

1
2
3
4
var html =
<form>
    <input type="text">
</form>;

Hasta que javascript soporte E4X en todos los navegadores, esto no va a ser podible…

Mientras llega E4X podemos simularlo utilizando los comentarios de javascript, para alli almacenar nuestras variables de una manera legible…

Definiriamos variables de la siguiente manera:

1
2
3
4
5
6
7
    /*!
    {"embed":{ "id":"form" } }
    <form>
        <input type="text" name="user"/>
        <input type="text" name="password"/>
    </form>
    */

La primera linea tiene que se un comienzo de comentario javascript /* , pero atencion con el simbolo ! justo detras, por lo que quedaria en /*!. Esto lo utilizamos para que algunos minimizadores de codigo no borren estos comentarios.
En la segunda linea es donde le especificamos al parser la variable que estamos definiendo, usando la propiedad id del objecto JSON descrito.
La ultimi linea tiene que ser un cierre de comentario */ en linea nueva…

Ejemplo completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var data = function()
{
    /*!
    {"embed":{ "id":"form" } }
    <form>
        <input type="text" name="user"/>
        <input type="text" name="password"/>
    </form>
    */


    /*!
    {"embed":{ "id":"button"} }
        <button value="Send">
    */
                 
}
var parsedData = window.parseEmbeds(data);
alert( parsedData.form )
alert( parsedData.button );

Libreria de parseo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(function(window)
{
    window.parseEmbeds = function( fn, opt )
    {  
        var dataObj = {}
        var regex_comments = /\*(.|[\r\n])*?\*/gi;
        var code = fn.toString().match( regex_comments );
        var comment;
        var lines;
        var outputString;
        var trim11 =function(str){str = str.replace(/^\s+/, '');for (var i = str.length - 1; i >= 0; i--) {if (/\S/.test(str.charAt(i))) {str = str.substring(0, i + 1);break;}}return str;};
        for( var i=0; i<code.length; i++ )
        {  
            comment = code[ i ];
            if( comment.indexOf('{"embed":')!=-1 )
            {
                lines = comment.split('\n');
                outputString = "";
                for( var e=2; e
    <lines.length-1; e++ )
                {
                   outputString+=trim11(lines[e]);
                }
                dataObj[ JSON.parse( lines[ 1 ] ).embed.id ] = outputString;
            }
        }
        return dataObj;
    }
})(window);

OSX 5005:Unknown error optimizing byte code

Trabajando en un gran proyecto AIR, al intentar compilar me daba este error:

1
"5005:Unknown error optimizing byte code".

Para solucionarlo, debemos aumentar la memoria del compilador mediante la creación de un archivo en:

1
~ /. MacOSX / Environment.plist

Copiaremos entonces este texto en ella:

1
2
3
4
5
6
7
8
9
<? Xml version = "1.0" encoding = "UTF-8"?>
<! DOCTYPE plist PUBLIC "- / / Apple / / DTD PLIST 1.0 / / EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
version="1.0">
<plist
<dict>
JAVA_TOOL_OPTIONS <key> </ key>
<string>-Xmx512m </ string>
</ Dict>
</> Plist

En el caso de que utilizemos flash CS5 deberemos tambien editar este fichero:

1
 ~ / Library / Application Support / Adobe / Flash CS5/en_US/Configuration/ActionScript3.0/jvm.ini

Cambiamos: -Xmx128m a -Xmx512m.