Showing posts with label IOS. Show all posts
Showing posts with label IOS. Show all posts

Thursday, December 19, 2013

MyGlass for iOS available on App Store

MyGlass app for iOS is now available on the App Store after a brief appearance a few days ago. MyGlass on iOS required that your glass are in the XE12 version.






To update your Glass, go to Settings (swipe back) > Device Info Card > Tap > Update Device.

The MyGlass app lets you set up, configure, and mange your Google Glass on the go. You can also use it to get directions and more.

MyGlass on App Store

Thursday, June 13, 2013

Safari IOS7 & HTML5

I'm just installing IOS7 Beta 1 on my iphone. So directly, let's go to html5test.com to compare IOS7 Score vs IOS6 score.

The score for IOS7 is 404 points and 9 Bonus points and the score for IOS6 (6.0.1) is 386 points and 9 Bonus points.

What are the differences?
  1. Add Subtitle support in Video
  2. Removal input type=datetime
  3. Add progress
  4. Add Seamless iframe
  5. Add XmlHttpRequest level 2
  6. Add Page visibility
  7. Canvas
    1. context.setLineDash()
    2. context.getLineDash()
Sources : html5test.com

Monday, January 28, 2013

IOS 6.1 - Correction du bug javascript de getCurrentPosition en Web App

Je viens d'installer la nouvelle version d'iOS, 6.1. Je l'attendais avec impatience pour la correction des bugs javascript.

J'avais constaté un bug dans la version antérieur, 6.0.1, lorsqu'une Web App était ajoutée à l'écran d'accueil via la balise suivante :

  1. <meta name="apple-mobile-web-app-capable" content="yes" />


 La fonction navigator.geolocation.getCurrentPosition() ne retournait jamais la fonction de callback :

  1. navigator.geolocation.getCurrentPosition(getPosition,getPositionError);


Ce bug semble corrigé dans cette nouvelle version. Je viens de tester, reste à tester la fonction watchPosition() :)

Monday, December 17, 2012

1 foyer sur 10 possède une tablette tactile en France

Selon la dernière étude de Mediametrie en date du 11/12/2012, 1 foyer sur 10 en France est équipé d'une tablette tactile.


800 000 primo-accédant en 6 mois

Au 3 ème trimestre 2012, près de 3 millions de foyers possèdent une tablette tactile en France. Ce chiffre est en très forte augmentation puisqu'on compte 1/3 de foyer équipés en plus en 6 mois ce qui représente 800 000 primo-accédant en 6 mois.

Les familles urbaines bien équipées

La tablette est un équipement urbain : 14% des foyers parisiens en possèdent une. Elle concerne également les foyers relativement jeunes mais dotés d'un certain pouvoir d'achat : 17,5% des foyers dont "le chef de famille" est âgé de 35 à 49 ans.

Source : Mediametrie - Intégralité des résultats 

window.matchMedia, MediaQuery en Javascript

Résumé

Retourne un objet MediaQueryList représentant le résultat du pattern MediaQuery passé en paramètre.

Syntaxe 

  1. mql = window.matchMedia(mediaQueryString)

Exemple

if (window.matchMedia("(min-width: 400px)").matches) {
   /* the view port is at least 400 pixels wide */
} else {
   /* the view port is less than 400 pixels wide */
}

Il est possible aussi d'ajouter dans le pattern Media Query, l'orientation : (orientation: portrait).

On peut aussi ajouter un observer implémantant l'interface MediaQueryListListener, pour être notifier du changement d'orientation par exemple comme ci-dessous :

  1. var mql = window.matchMedia("(orientation:portrait)");
  2. mql.addListener(handleOrientationChange);
  3. handleOrientationChange(mql);

  4. function handleOrientationChange(mql) {
  5.    if (mql.matches) {
  6.      /*The device is currently in portrait orientation */
  7.    } else {
  8.      /*The device is currently in landscape orientation */
  9.    }
  10. }


Cette fonction peut être très utile lorsque l'on gère directement le design en javascript. Car l'étude du User-Agent n'est quelque fois pas suffisant pour déterminer le style d'affichage notamment sur les tablettes 7''.
En paysage, on affichera plutôt le design dédié au tablette alors qu'en portrait on aura tendance à afficher le design Smartphone.

Thursday, December 13, 2012

ASP.NET Forms Authentication Safari/Chrome sur IOS

Contexte

Je développe actuellement une Webapp HTML5 communiquant avec des services WCF. Pour les sécuriser, j'ai implémenté l'authentification ASP.NET par formulaire.
Certaines fois, sur iOS 6,  l'appel au webservice sécurisé était refusé. Sur ipad, je l'ai généralement rencontré en Webview, quand on ajoute la webapp sur le Homescreen.

Lors de la connexion de l'utilisateur à la Web App, on réalise le code ci-dessous :
  1. FormsAuthentication.SetAuthCookie(userName, true /*createPersistentCookie*/);
La configuration de Web.config est la suivante :
  1. <authentication mode="Forms" >
  2. <forms loginUrl="../Login.html" timeout="2880" />
  3. </authentication>

Solution

En analysant la réponse du serveur je me suis aperçu que finalement je n'étais pas authentifié. Alors que le web service d'authentification l'avait bien confirmé.
Certaines fois le cookie d'authentification n'est pas bien obtenu par le navigateur, notamment sur Safari et Chrome. Après beaucoup de recherches, j'ai finalement trouvé une solution.

Plusieurs étapes sont à réaliser :
  1. Dans le Web.config, il faut ajouter la clé suivante, qui permet de forcer l'utilisation des cookies par le navigateur. Par défaut c'est UseDefault :
    1. <authentication mode="Forms" >
    2.        <forms loginUrl="../Login.html" timeout="2880" cookieless="UseCookies" />
    3. </authentication>
  2. Ensuite il peut aussi être utile de rajouter une MachineKey dans le Web.Config, pour éviter un problème dans le cryptage/décryptage du cookie d'authentification.
    1. <system.web> 
    2.       <machineKey validationKey='myKey' decryptionKey='myDecryptKey' validation='SHA1'/>
    3. </system.web>
Pour générer une machineKey, vous pouvez aller directement sur ce site : Générateur de machineKey

Monday, December 10, 2012

HTML5 et les développeurs - Etude Appcelerator

Selon une étude réalisée par Appcelerator, éditeur de l’outil de développement d’applications mobiles Titanium, et le cabinet d’analystes IDC, HTML5 n’aurait pas encore convaincu les développeurs mobiles. Pire, les fonctionnalités proposées pour l’heure par le futur standard, ne satisferaient pas les développeurs. 
Selon les résultats de l’étude, les développeurs montrent une attitude de « neutre » à « insatisfait » pour les applications développées en HTML5 : 
  1. 62 % l’expérience utilisateur 
  2. 72,4% les performances 
  3. 83,4% la monétisation 
  4. 75,4% la fragmentation
  5. 60,3% le contrôle de la distribution
  6. 67,9% l’intemporalité des nouvelles mises à jour
  7. 81,8% la sécurité.

En revanche, 58% développeurs sondés se disent pleinement satisfaits concernant les possibilités de développement cross plate-forme du langage, et un peu moins de 50% se positionnent de même pour les mises à jour.
Autre enseignement de cette étude : la baisse de popularité d’Android chez les développeurs  se poursuit. Dans cette édition, seulement 66% des développeurs interrogés affirment être très intéressés par les développements pour les tablettes Android et 76% par les smartphones. Une baisse légère, note l’étude – de 2 et 3 points respectivement – mais qui s’inscrit dans la durée. La plate-forme Apple reste encore la cible préférée des développeurs.


Thursday, November 8, 2012

Internet Mobile - Septembre 2012

Audience de l'internet Mobile en France - Sept 2012


L'institut Médiamétrie a publié hier ses statistiques concernant l'internet mobile. On y apprend qu'au 3 ème trimestre 2012, 41,2% des individus vivant en France se sont connectés à l'internet mobile par un site ou une application, 46,6% des Français sont équipés d'un smartphone.

Au niveau des systèmes d'exploitation, Android est en forte augmentation par rapport au même trimestre 2011.
En terme de répartition entre les accès via site ou application est stable : 92.1% des mobinautes ont visités un site sur mobile et 72.1% ont visités au moins une application sur smartphone.

Source :  L'audience de l'internet mobile en France en septembre 2012 - Médiamétrie

Thursday, October 11, 2012

Backbone.js

Backone.js

Dans cet article, je vais vous présenter la librairie Backbone.js. L’API est disponible sur le site : http://backbonejs.org/
Backbone permet de mettre en place une architecture MVC en javascript, côté client. Cela va permettre d’avoir un code javascript mieux structuré.

Model

Un modèle est une représentation de vos données sous forme d’objet. Pour créer un modèle backbone, il est nécessaire d’étendre la class : Backbone.Model.extend() ;
  La déclaration d’un model « Personne » :
  1. var html5webapp = {};
  2. html5webapp.Personne = Backbone.Model.extend({
  3.  defaults: {
  4.    "Id" :"1",
  5.    "Nom" : "Toto",
  6.    "Prenom" : "Tata"
  7.  },
  8.  initialize : function Personne() {
  9.   this.bind("error", function(model, error){
  10.    console.log( error );
  11.   });
  12. }});
L’attribut defaults permet de mettre des valeurs par défaut aux propriétés de notre modèle.
Grâce à la console de développement Google Chrome, nous pouvons déclarer une variable pers comme ceci :

   Pour obtenir maintenant la valeur des propriétés :


   Il est aussi possible d’ajouter des méthodes à notre modèle, comme par exemple des accesseurs à nos propriétés :
  1. getId : function() {
  2.     return this.get('Id');
  3. },
  4. setId : function(value) {
  5.    this.set({ Id : value });
  6. },
  7. getNom : function() {
  8.     return this.get('Nom');
  9. },
  10. setNom : function(value) {
  11.     this.set({ Nom : value });
  12. },
  13. getPrenom : function() {
  14.     return this.get('Prenom');
  15. },
  16. setPrenom: function(value) {
  17.     this.set({Prenom : value });
  18. }
Utilisation des accesseurs set /get :

Afficher un modèle

   Pour afficher un modèle, on utilise ici la librairie Underscore.js comme ceci :
  1. < script type="text/template" id="personne-template">
  2. < ul data-role="listview" id="personne-field" data-inset="true">
  3. < li >Id: <%= Id %>< /li>
  4.  < li >Nom: <%= Nom %>
  5. < li >Prenom: <%= Prenom %></ li>
  6. < /ul>
  7. < /script>
La déclaration du template « Underscore » est à faire dans une balise script. Puis on y ajoute les propriétés du modèle à afficher.

View

Afin de faire l’interface entre notre modèle et de notre template, on déclare une View. Dans cette view, on lui spécifie la template à utiliser via cette instruction : 
this.template = _.template($('#personne-template').html());

  1. html5webapp.PersonneView = Backbone.View.extend({
  2.   initialize: function(){
  3.      this.template =
  4.            _.template($('#personne-template').html());
  5.          },
  6.     render: function() {
  7.     var container = this.options.viewContainer,
  8.     personneModel = this.model,
  9.     renderedContent = this.template(personneModel.toJSON());
  10.     container.html(renderedContent);
  11.      container.trigger('create');
  12.     return this;
  13.      }
  14.    });
Puis lorsque la page HTML est prête, nous allons déclarer un conteneur dans lequel on souhaite afficher le modèle. Et enfin instancie la View en lui passant le conteneur et le modèle.
  1. $(document).ready(function() {
  2.  var personneContainer = $('#Personne').find(":jqmData(role='content')"),
  3.          perosnneView;
  4.  var persModel = new html5webapp.Personne();
  5. personneView = new html5webapp.PersonneView({model : persModel,
  6.  viewContainer: personneContainer});
  7.    personneView.render();
  8. });
La fonction render() va réaliser l’interprétation du template et du modèle.

Affichage du modèle avec les propriétés par défaut.

Monday, July 2, 2012

HTML5 - GoogleMap - Layer OpenStreetMap

OpenStreetMap avec Google Map


Dans cet article, je vais vous montrer comment afficher un layer OpenSteetMap grâce à l'API Google Map en javascript.Tout cela est bien évidement utilisable en HTML5 pour réaliser une WebApp.

Pour rappel, l'intégration de l'API Google Map en javascript est requise.Pour cela, copier la balise ci-dessous :
  1. < script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=yourKey&sensor=false" >< /script>
Ensuite, il est nécessaire d'ajouter une balise div permettant d'afficher la Map. Comme ceci :
  1. < div id="map" /> < /div>

Maintenant, il faut créer la Map via l'API Google Map. Mais cette fois, on ne va pas mettre un map type Google Map comme par exemple celui des routes : google.maps.MapTypeId.ROADMAP

Mais cette  fois, c'est un type particulier : "OSM", de plus il faut le coupler avec un paramètre supplémentaire : mapTypeControlOptions
  1. map = new google.maps.Map(element, {
  2.    center: new google.maps.LatLng(me.latitude, me.longitude),
  3.    zoom: 15,
  4.    mapTypeId: "OSM",
  5. mapTypeControlOptions: {
  6.   mapTypeIds: ["OSM"]
  7. }
  8. });

Par rapport à un layer Google Map, il est nécessaire d'obtenir l'image OpenStreetMap. Voici le code javascript nécessaire pour afficher le visuel OpenStreetMap.
  1. map.mapTypes.set("OSM", new google.maps.ImageMapType({
  2.             getTileUrl: function(coord, zoom) {
  3.                      return "http://tile.openstreetmap.org/" + zoom + "/"
  4.                          + coord.x + "/" + coord.y + ".png";
  5.                     },
  6.                 tileSize: new google.maps.Size(256, 256),
  7.                 name: "OpenStreetMap",
  8.                 maxZoom: 18
  9.        }));

C'est assez fun et puis c'est un avant goût de la prochaine cartographie d'IOS6. Apple a décidé d'abandonner Google Map au profit d'Open Street Map pour la prochaine mouture d'IOS.

Merci d'avoir lu cet article, un partage sur les réseaux sociaux, ou un commentaire j'en serai très heureux.

Saturday, June 30, 2012

Facebook abandonne HTML5 pour son app iOS


L’application Facebook pour IPhone est lente, très lente même.

Sur l'App-store, sur les 38 000 personnes l’ayant noté, plus de 21 000 personnes n’ont accordé qu’une seule étoile,tous la décrivant comme lente, toujours en chargement, ou crashs répétitifs.

En faite il se dit que l'application Facebook est la plus lente des 500 000apps disponible sur IPhone.

Cette fois Facebook va utiliser directement le code natif : Objective-C.
Car dans la version actuel c'est une web-application html5 wrapper dans une web view afin de mutualiser le code entre Windows Phone, Android et IOS.

Concrètement, les fonctionnalités de l’application resteront les mêmes, ainsi que le design, mais elle sera plus optimisée, rapide, réactive et pourra tirer parti du hardware.

De quoi remettre en cause la rapidité du HTML5 sur mobile ? Qu'en pensez-vous?

Source : New York Times