Archivos de Autor
Como crear un Autoinstalador para Archivos IPA en iOS
Para dar la posibilidad de instalar una APP de iOS sin pasar por iTunes, podemos crear un fichero .plist y subirlo a nuestro servidor, de esta forma podemos pasarle a nuestros clientes, testers, amigos, etc. nuestra APP para que la prueben, eso sí, es necesario que los dispositivos donde se vaya a instalar estén añadidos a nuestro Provisioning.
El fichero .plist debe de contener lo siguiente:
<?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">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>URL A NUESTRO .ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>NUESTRO DESCRIPTOR</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>EL TITULO DE LA APP</string>
</dict>
</dict>
</array>
</dict>
</plist>
Luego enlazar el fichero .plist con el siguiente formato, así se podrá descargar desde cualquier iOS: itms-services://?action=download-manifest&url=url-a-nuestro.plist
Y ya está listo!!
Cambiar permisos a archivos y directorios de forma masiva [LINUX]
Para tener una correcta configuración de permisos para directorios y archivos en Linux, es necesario que sólo tenga permisos de lectura, escritura y/o ejecución aquellos que sean necesarios, los demás cuantos menos permisos, mejor.
Por lo general para directorios deberían de estar en permisos:
754 (drwxr-xr--)
Propietario, lectura/escritura/ejecución
Grupo, lectura/ejecución
Otros, lectura
El comando a ejecutar para cambiar todos los directorios de forma recursiva a estos permisos:
find . -type d -exec chmod 754 {} \;
Donde indicamos que por cada directorio (-type d) que encuentre ejecute el comando chmod 754.
Para archivos, por lo general, con permisos 644, bastaría:
644 (-rw-r--r--)
Propietario, lectura/escritura
Grupo, lectura
Otros, lectura
El comando a ejecutar para cambiar todos los archivos de forma recursiva a estos permisos:
find . -type f -exec chmod 644 {} \;
Donde indicamos que por cada fichero (-type f) que encuentre ejecute el comando chmod 644.
Siguiendo estas reglas podemos tener nuestro servidor bastante protegido de ataques por apache, ftp, etc.
Adobe Native Extensions - iOS Mute Button
Ya tengo lista una nueva extensión que permite enmudecer tu aplicación según el estado del botón de Mute de iPhone o iPad.
Podéis descargarla de aquí: iOS Mute Button Adobe Native Extension
Y aquí podéis acceder a la documentación de la extensión.
-- NUEVA VERSION --
Ahora soporta más dispositivos, por si haces una aplicación compatible con otros sistemas (android, air tv, windows, mac), la aplicación no dará error al tratar de usar la extensión.
Nueva función Mute.dispose(), para eliminar la extensión de memoria cuando ya no sea necesario, recomendado utilizarla antes de cerrar la APP.
- NEW VERSION -
Now supports more devices, if you make an application compatible with other systems (android, air tv, windows, mac), the application will fail when trying to use the.
New Mute.dispose function () to eliminate the spread of memory when no longer needed, recommended use before closing the APP.
Adobe Native Extension - AdMob
El uso de las Native Extensions de Adobe permite ejecutar código nativo del sistema operativo donde se ejecute nuestra aplicación.
Para sacar el máximo partido de AdMob con Juegos Flash empaquetados para iPhone/iPad/iPod Touch, es necesario mostrar la publicidad de AdMob de forma nativa, de esta manera se consigue un 100% de efectividad, ya que AdMob muestra la publicidad como de forma nativa, así es capaz de mostrar todas las creatividades disponibles e incluso mostrar AdSense si no tiene anuncios relevantes.
Aquí os dejo un .zip con la extensión y una pequeña ayuda: admob-native-extension.zip
El uso es realmente sencillo:
package {
import com.devilishgames.air.extensions.admob.ios.AdMob;
import flash.display.Sprite;
import flash.geom.Point;public class adMobExample extends Sprite {
private var adMob:AdMob;public function adMobExample():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);try {
adMob = new AdMob(); // Instanciamos la clase AdMob
adMob.id = "ID DE ADMOB"; // Indicar el ID de la APP de AdMob
adMob.size = AdMob.GAD_SIZE_320x50; // Indicamos el tamaño del Banner
adMob.position = new Point(0, stage.stageHeight - adMob.size.y); // Indicamos la posición del banner
adMob.testMode = false; // Decimos que no use el modo test
adMob.showAdMob(); // Mostramos el banner
} catch (e:Error) {
trace(e.getStackTrace());
}
}
}
}
Descripción de la clase:
adMob.id: (String) Cadena con el ID de AdMob
adMob.size: (Point) Punto donde indicar el ancho y alto del banner (.x = ancho, .y = alto)
adMob.position: (Point) Punto donde indicar la posición del banner
adMob.testMode: (Boolean) Mostrar el banner en modo Test o no (por defecto True)
adMob.showAdMob(): (Function) Muestra el banner
adMob.hideAdMob(): (Function) Oculta el banner
Espero que os sea de utilidad.
* a modo de ayuda, menos del 10% de los banners que se muestran serán con un ID mio *
Como guardar datos de forma permanente en Flash (ActionScript 3)
Guardar datos, que permanezcan utilizables incluso cuando se cierra Flash es algo realmente sencillo. Es una buena técnica para guardar los progresos en los videojuegos, puntos, niveles, etc.
Para guardar datos debemos de usar el objeto: SharedObject (más info), esto objeto, entre otras cosas, nos permite guardar variables en disco, para luego poder leerlas y modificarlas cada vez que lo necesitemos.
La forma de guardar los datos
// Importamos la libreria
import flash.net.SharedObject;// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");// Añadimos un valor (por ejemplo la puntuación)
so.data.puntuacion = miPuntuacionJuego;// Guardamos los datos
so.flush();
// Importamos la libreria
import flash.net.SharedObject;// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");// Recuperamos un valor (por ejemplo la puntuación)
if (so.data.puntuacion>0) { // Hay que asegurarse que los datos guardados tienen información válidamiPuntuacionJuego = so.data.puntuacion;}







(1 votos, media: 5 de 5)
