Changer le commentaire des headers des fichiers Xcode

Un jour j’ai du travaillé en marque blanche sur un projet. Le client pour qui je travaillais ne devait pas voir le nom du développeur qui avait travaillé sur le projet iOS. Au début, je changeais à chaque création de fichier, son entête, puis j’en ai eu vite marre, car c’est une chose que je n’ai pas l’habitude de faire dans mon processus de développement d’application.

Avec XCode 9, on peut maintenant changer le header des fichiers à l’aide d’une macro. Aujourd’hui, les fichiers ont cette macro qui ressemble à ça :

// ___FILENAME___
// ___PACKAGENAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
// ___COPYRIGHT___
//

Comment faire ?

  1. Créer un fichier IDETemplateMacros.plist
  2. Ajouter FILEHEADER de type String afin d’y ajouter votre macro.

Capture d’écran 2017-09-22 à 09.39.47.png

DATE

La date de création du fichier.

DEFAULTTOOLCHAINSWIFTVERSION

La version de Swift utilisée par défaut dans le toolchain.

FILEBASENAME

Le nom du fichier courant sans aucune extension.

FILEBASENAMEASIDENTIFIER

Le nom du fichier courant encodée comme un C identifier.

FILEHEADER

Le texte placé en haut de chaque nouveau fichier.

FILENAME

Le nom complet du fichier courant.

FULLUSERNAME

Le nom complet du l’utilisateur macOS connecté.

NSHUMANREADABLECOPYRIGHTPLIST

Le String copyright du fichier Info.plist de la target de l’app. Par exmple :

NSHumanReadableCopyright
Copyright © 2017 Apple, Inc. All rights reserved.

ORGANIZATIONNAME

Le nom de l’entreprise pour l’équipe utilisé dans le provisioning profile.

PACKAGENAME

Le nom du package du scheme courant.

PACKAGENAMEASIDENTIFIERA

Version du nom du package encodé en C-identifier pour le scheme courant.

PRODUCTNAME

Le nom de l’application pour le produit du scheme courant.

PROJECTNAME

Le nom du projet courant.

RUNNINGMACOSVERSION

La version de macOS qui fait tourner XCode.

TARGETNAME

Le nom de la target courante.

TIME

L’heure de création du fichier.

USERNAME

Le login de l’utilisateur connecté.

WORKSPACENAME

Le nom du workspace courant. Si il n’y a qu’un seul projet ouvert, alors ce sera le nom du projet courant.

YEAR

L’année de création du fichier sur 4 chiffres.

Voici ce que moi j’ai mis comme nouveau header:

// ___FILENAME___
// ___PACKAGENAME___
// ___WORKSPACENAME___
// ___COPYRIGHT___

3. Enfin il ne reste plus qu’à déplacer ce fichier dans le bon dossier. Plusieurs choix existe avec des scopes différents.

  • Pour un seul projet et un seul utilisateur:
    <ProjectName>.xcodeproj/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
  • Pour toutes les membres de l’équipe pour un seul projet:
    <ProjectName>.xcodeproj/xcshareddata/IDETemplateMacros.plist
  • Pour tous les projets dans le même workspace pour un seul utilisateur:
    <WorkspaceName>.xcworkspace/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist
  • Pour tous les projets dans un workspace pour tous les membres de l’équipe:
    <WorkspaceName>.xcworkspace/xcshareddata/IDETemplateMacros.plist
  • Pour tous les projets:
    ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist

Vous pouvez retrouver toutes les étapes  pour créer vos propres headers dans le XCode Help.

Capture d’écran 2017-09-22 à 09.30.38

Comment générer le retour haptique avec UIFeedbackGenerator

Disponible à partir d’iOS 10.0

La technologie 3D Touch introduit par Apple le 9 septembre 2014 lors de la présentation de l’Apple Watch. Puis disponible sur un iPhone, depuis la version 6S et 6S Plus. Indisponible aux développeurs jusqu’à lors.

iOS 10 introduit de nouvelles façons de générer un retour haptique en utilisant des modèles de vibration prédéfinis partagés par toutes les applications, aidant ainsi les utilisateurs à comprendre que les différents types de commentaires portent une signification particulière. Le noyau de cette fonctionnalité est fournie par UIFeedbackGenerator, mais qui est juste une classe abstraite – les trois classes qui vous intéressent vraiment sont UINotificationFeedbackGenerator, UIImpactFeedbackGenerator et UISelectionFeedbackGenerator.

Le premier de ceux-ci, UINotificationFeedbackGenerator, vous permet de générer des retours sur la base de trois événements système: erreur, le succès, et d’avertissement.

Le second, UIImpactFeedbackGenerator, vous permet de générer légère, moyenne, et des effets lourds que Apple dit fournir une « métaphore physique qui complète l’expérience visuelle. »

Enfin, UISelectionFeedbackGenerator génère une rétroaction qui doit être déclenché lorsque l’utilisateur est en train de changer leur sélection sur l’écran, par exemple se déplaçant à travers un PickerView.

A ce jour, seul le nouveau moteur Taptic trouvé dans l’iPhone 7 et iPhone 7 Plus supporte ces API. Les autres appareils ignorent silencieusement les demandes haptiques.

Pour commencer à essayer ces API, créez un modèle SingleViewApplication dans Xcode, puis remplacer le ViewController avec ce code en swift:

import UIKit

class ViewController: UIViewController {
    var i = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        let btn = UIButton()
        btn.translatesAutoresizingMaskIntoConstraints = false

        btn.widthAnchor.constraint(equalToConstant: 128).isActive = true
        btn.heightAnchor.constraint(equalToConstant: 128).isActive = true
        btn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        btn.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

        btn.setTitle("Tap here!", for: .normal)
        btn.setTitleColor(UIColor.red, for: .normal)
        btn.addTarget(self, action: #selector(tapped), for: .touchUpInside)

        view.addSubview(btn)
    }

    func tapped() {
        i += 1
        print("Running \(i)")

        switch i {
        case 1:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.error)

        case 2:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.success)

        case 3:
            let generator = UINotificationFeedbackGenerator()
            generator.notificationOccurred(.warning)

        case 4:
            let generator = UIImpactFeedbackGenerator(style: .light)
            generator.impactOccurred()

        case 5:
            let generator = UIImpactFeedbackGenerator(style: .medium)
            generator.impactOccurred()

        case 6:
            let generator = UIImpactFeedbackGenerator(style: .heavy)
            generator.impactOccurred()

        default:
            let generator = UISelectionFeedbackGenerator()
            generator.selectionChanged()
            i = 0
        }
    }
}

Lorsque vous exécutez que sur votre téléphone, en appuyant sur le « Tap here ! » vous aurez les retours haptique par ordre.

Car cela peut prendre un peu de temps au système pour préparer le retour haptique, Apple recommande d’appeler la méthode prepare() avant de déclencher l’effet haptique. Si vous ne le faites pas, il y aura un léger décalage entre l’effet visuel et haptique correspondant, cela peut dérouter certains utilisateurs.

Apple demande expressément d’utiliser judicieusement le retour haptique des iPhone, afin d’éviter une mauvaise expérience utilisateur. De plus n’oubliez pas les anciens iPhone !

WWDC 16 superbe landing page

WWDC16

Les billets pour la prochaine WWDC comprenait Worldwide Developer Conference sont mise à la vente. Bon on est à 1599 USD l’entrée donc seul quelques riches développeurs pourront y participer mais vous pourrez vous consoler en regardant le keynote ici le 13 juin prochain.

Capture d’écran 2016-04-20 à 10.51.02

Swift est à l’honneur !

Pour l’occasion Apple a mis en place un tout nouveau site web pour faire la promotion de leur event. Dans cette superbe landing page on retrouve comme tous les ans un petit Easter Egg.

« Hello drive, fast as you can » pourrait être une intervertion de Uber ?

A vous de jouer, trouver une correspondance, une nouvelle fonctionnalité du prochain iOS !

Leur emailing était aussi très beau, j’ai même cru pouvoir taper du texte 🙂

wwdc16-schedule-kickoff_2x

De quoi vont ils parler ?

Nous sommes à une conférence pour les développeurs, donc rien de « marketing » durant ces 5 jours de conférences, mais une présentation des prochaines version de iOS 10, Mac OS X, Watch OS et TV OS.

wwdc16-schedule-labs_2x

Beaucoup de développeurs y vont et partagent leurs expériences et surtout participent à des ateliers avec les développeurs de leur OS favoris !

wwdc16-schedule-consultations_2x

 

Contacter l’équipe de Review Apple

Récemment, après avoir attendu 3 semaines qu’Apple valide une application. Le jour même j’ai vu un bug ! Le bug portant sur une fonctionnalité TRÈS importante de l’application, je l’ai corrigé dans les 24 heures et ai renvoyé l’application chez Apple.

SAUF que Apple pourrait reprendre du temps pour valider ce build très urgent.

En discutant avec mon CTO, il me dit que l’on peut contacter l’équipe de Review Apple.

Après avoir rempli le petit formulaire (ici) et surtout avoir donné la raison pour laquelle je demande ce passe droit, vous attendez la validation d’Apple.

Capture d’écran 2016-03-24 à 14.28.32

Vous recevez un mail dans les heures qui suivent pour vous dire qu’Exceptionnellement l’equipe qui s’occupe de tester les applications pourrait éventuellement prendre l’application en priorité.  Aucune garantie que ça soit dans les temps. Le mail évoque le fait que si l’application n’est pas conforme la demande serait toujours effective pour les builds suivant jusqu’à validation. Une chance quand on connaît le process compliqué qu’est la validation d’une application.

Au final, dans mon cas, l’application fut valider 2 heures après le mail. Un retour d’expérience très positif pour cette procédure.

Et vous ça vous êtes déjà arrivé de faire la demande ? Vous la connaissiez ?

Utilisez des points d’arrêt au lieu de NSLog

Vous avez probablement essayé de faire des flux logique de débogage ou d’inspecter le contenu des paramètres de votre méthode en ajoutant des déclarations NSLog et en re-compilant votre application.

Il y a une façon beaucoup plus efficace et plus rapide de le faire en utilisant juste des points d’arrêt (Breakpoint).

Il suffit d’ajouter un point d’arrêt à la ligne que vous auriez normalement ajouter une déclaration NSLog, puis clic droit. Vous devriez voir ceci:

tumblr_inline_my4hd7Hzgx1qh9cw7

Maintenant, cliquez sur « Edit Breakpoint… », qui révèle une nouvelle popover, avec un tas d’options:

tumblr_inline_my4hexzxB51qh9cw7

Tout d’abord, activez la case à cocher «Automatically continue after evaluating » de sorte que vous ne soyez pas interrompu chaque fois que le contrôle de votre application atteint ce point. Cliquez ensuite sur « Add Action » et tapez « po » (ou p si elle est pas un objet) suivis par tout ce que vous avez essayé de NSLog.

tumblr_inline_my4hl5gXWj1qh9cw7

Lorsque votre commande atteint ce point, vous verrez votre commande en cours d’exécution, et sa sortie étant connecté à la console Xcode.

Vous pouvez ajouter à votre débogage une étape supplémentaire en ajoutant une condition. Seulement lorsque la condition sera évaluée à true, elle exécutera votre commande.

Cloudinary iOS SDK

Je reviens depuis un long moment d’absence avec un petit service très utile. Je vais vous présenter le SDK iOS Cloudinary. Cloudinary est un service cloud qui offre une solution pour la gestion des images. Ce service vous propose bien sûr d’uploader vos images sur le cloud et ensuite de récupérer facilement et rapidement (Cloudinary met en place un cache pour toutes vos requêtes) une image dans un format différent. Je m’explique, vous allez pouvoir récupérer votre image dans une taille différente, respectant le ratio de votre image ou en centrant dans votre image. L’api vous propose de créer un thumbnail en centrant sur le visage, puisqu’il contient un détecteur de visage automatique.

Comment installer le sdk cloudinary pour ios

Installation

Vous pouvez vous rendre sur le repository GitHub pour télécharger la dernière version du SDK (1.0.14). Attention, je leur ai proposé un fix car il faut cloner le repository en local pour ajouter dans les headers le CLLayer.h non inclus. Sans ce dernier vous n’arriverez pas à compiler.
Ou bien passer par cocoapods (non mentionné dans leur doc).

Configuration

Vous devez posséder un compte (gratuit). Si ce n’est pas encore le cas rendez-vous ici.

Il ne vous reste plus qu’a créer un objet CLCloudinary avec vos identifiants.

#import "Cloudinary.h"

CLCloudinary *cloudinary = [[CLCloudinary alloc] initWithUrl: @"cloudinary://123456789012345:abcdeghijklmnopqrstuvwxyz12@n07t21i7"];

Qui correspond de façon plus détaillé à :

CLCloudinary *cloudinary = [[CLCloudinary alloc] init];
[cloudinary.config setValue:@"n07t21i7" forKey:@"cloud_name"];
[cloudinary.config setValue:@"123456789012345" forKey:@"api_key"];
[cloudinary.config setValue:@"abcdeghijklmnopqrstuvwxyz12" forKey:@"api_secret"];

Maintenant que vous êtes connecté avec Cloudinary il ne reste plus qu’a récupérer votre première image. Imaginons que vous voulez récupérer une image qui s’appelle sample.jpg

NSString *url = [cloudinary url:@"sample.jpg"];

// http://res.cloudinary.com/n07t21i7/image/upload/sample.jpg

Mais le plus intéressant est à venir. Comme je vous l’ai dit plus haut, Cloudinary propose un service de transformation de votre image.

CLTransformation *transformation = [CLTransformation transformation];
[transformation setWidthWithInt: 100];
[transformation setHeightWithInt: 150];
[transformation setCrop: @"fill"];

NSString *url = [cloudinary url:@"sample.jpg" options:@{@"transformation": transformation}];

// http://res.cloudinary.com/n07t21i7/image/upload/c_fill,h_150,w_100/sample.jpg

Pour upload votre image vous devez faire comme suit.

Créer un object CLUploader à partir de votre CLCloudinary. Puis uploader votre image soit en NSData soit avec le pathURL.

CLUploader* uploader = [[CLUploader alloc] init:cloudinary delegate:self];
NSData *imageData = NSData *imageData = UIImageJPEGRepresentation(image, 1); // image est une UIImage
[uploader upload:imageData options:@{@"public_id": @"nom_image"}];
@interface ViewController () <CLUploaderDelegate>
@end

@implementation ViewController

...

- (void) uploaderSuccess:(NSDictionary*)result context:(id)context {
    NSString* publicId = [result valueForKey:@"public_id"];
    NSLog(@"Upload success. Public ID=%@, Full result=%@", publicId, result);
}

- (void) uploaderError:(NSString*)result code:(int) code context:(id)context {
    NSLog(@"Upload error: %@, %d", result, code);
}

- (void) uploaderProgress:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite context:(id)context {
    NSLog(@"Upload progress: %d/%d (+%d)", totalBytesWritten, totalBytesExpectedToWrite, bytesWritten);
}

@end

Tarification

Avec un compte gratuit vous allez pouvoir stocker 75,000 images et videos avec 7,500 transformations. Vous avez besoin de plus ? Le reste c’est ici.

Résumé

Je trouve se service bien complet. Le SDK malgré le peu de documentation est très simple d’intégration et d’utilisation. Je suis justement en train de l’intégrer dans l’application que je développe en ce moment.

Qu’en pensez-vous ? Allez-vous l’intégrer dans vos applications ? Dites-moi tout dans les commentaires.

Natif x Hybride

Je me pose souvent la question car certains clients me demandent de plus en plus de développer une application sur plusieurs plateformes. Souvent aussi pour une question de prix, développer les applications nativement revient beaucoup plus cher. C’est pourquoi je propose l’option d’une solution hybride en fonction du type de demande.

HFiDGQz

Les applications natives sont développés spécifiquement pour une plate-forme, et peuvent profiter pleinement de toutes les fonctionnalités de l’appareil – ils peuvent utiliser l’appareil photo, le GPS, l’accéléromètre, la boussole, la liste de contacts, et ainsi de suite.

Les applications hybrides font partie des applications natives, applications partie Web. Comme les applications natives, ils vivent dans un app store et peuvent profiter des nombreuses fonctionnalités de périphériques disponibles. Comme les applications web, ils comptent sur le HTML qui est rendu dans un navigateur, avec comme seule différence que le navigateur est intégré dans l’application.

WWDC 2015 : Ce qu’il faut retenir !

Pour la 26e édition, Apple nous a réservé plusieurs annonces.

macgpic-1433783435-2771154622395-sc-op

OS X El Capitan

On a le nouveau nom d’OS X ! El Capitan, successeur de Yosemite. C’est le nom d’un sommet dans le parc Yosemite.

macgpic-1433783608-2943882107614-sc-op

 

Apple s’est concentré sur l’expérience et les performances !

1- On peut d’abord retrouver son curseur plus rapidement : il faut le secouer et il grossit.

2- Apple a ajouté d’autres gestes avec le trackpad.

3- Dans Safari, on peut accrocher des sites (comme dans Chrome et Firefox). Ces sites sont à côté des onglets. On peut aussi couper facilement le son de n’importe quel onglet.

4- Spotlight comprend l’anglais pour faire des recherches plus évoluées, notamment des recherches qui combinent plusieurs critères. On a encore plus d’informations, comme la météo. Et ces fonctions sont aussi disponibles dans les logiciels : dans Mail, on peut demander les mails que l’on a ignoré de tel interlocuteur. Idem dans le Finder.

5- Mission Control est plus fluide.

macgpic-1433783968-3303798741801-sc-op

6- On peut travailler avec deux fenêtres côte à côte (comme dans Windows…). On peut choisir un côté ou l’autre et il y a du flou.

A la fin de sa démo Craig Federighi évoque à nouveau les différentes nouveautés présentées dans la démonstration. On est passé à côté d’un nouveau Notes, avec la possibilité de formater le texte et d’ajouter des images.

D’abord pour les développeurs. Bêta publique en juillet. Sortie finale à l’automne.

iOS 9

macgpic-1433784767-4103443607587-sc-op

macgpic-1433784753-4089300992405-sc-op

iOS 9 apporte bien Proactivity, comme prévu par la rumeur. Le téléphone apprend que vous écoutez de la musique tous les matins en courant. Et il peut proposer automatiquement un titre. Cela fonctionne en fonction du contexte : dans la voiture, il peut lancer un podcast.

macgpic-1433784816-4152183129657-sc-op macgpic-1433784786-4122264364051-sc-op

Siri vous informe au bon moment pour partir, en fonction d’un rendez-vous et de la circulation. Si on vous appelle avec un numéro inconnu, Siri regarde dans les mails pour proposer un nom.

macgpic-1433784842-4178402732081-sc-op

On peut glisser l’écran d’accueil vers la droite pour afficher l’assistant.

macgpic-1433784853-4189158299704-sc-op

La recherche est aussi plus intelligente : on peut chercher des vidéos et les lancer directement. Surtout, il y a une API pour la recherche. Ce qui veut dire que les applications peuvent l’exploiter : on peut trouver du contenu et ouvrir directement le contenu recherché et on peut après revenir à la recherche.

macgpic-1433785621-4957156759487-sc-op

 

Passbook devient Wallet dans iOS 9. Google a un service qui a le même nom…

macgpic-1433785715-5050794537807-sc-op

Craig Federighi nous parle de Notes, comme sur OS X El Capitan, on pourra utiliser du texte enrichi, des images. Mais aussi des listes à cocher : pratique. Très pratique aussi : on peut dessiner dans Notes. On peut aussi ajouter un lien vers une page vers une note.

macgpic-1433785992-5327795894609-sc-op

Nouvelle application : News. Concurrent de Flipboard. Contenu personnalisé pour vous, fourni par plusieurs éditeurs. News sera lancé d’abord aux États-Unis, en Grande-Bretagne et en Australie.

Quick Type : dans iOS 9, il y a des raccourcis à côté des suggestions. On peut copier/coller du texte, changer la mise en forme du texte. Mais on peut aussi transformer le clavier en trackpad ! Avec deux doigts, on peut déplacer le curseur, faire des sélections…

macgpic-1433786711-6046821645745-sc-op

Multitasking : on va avoir des applications sur le même écran ! Beaucoup l’attendaient depuis longtemps… le « big one » comme le nomme Craig Federighi. Réservée à l’iPad.

macgpic-1433786827-6163276226529-sc-op

On peut maintenant lancer une vidéo et pendant que la lecture continue, on peut réduire la vidéo à un petit rectangle dans un coin (Picture in Picture) et utiliser le reste de l’interface normalement.

macgpic-1433787076-6412636829786-sc-op

Craig Federighi fait le point sur toutes les nouveautés d’iOS 9. Et il parle aux développeurs, évoquant quelques nouveautés spécifiques, comme les tests d’interface dans Xcode.

macgpic-1433787283-6619460971781-sc-op

Swift, le nouveau langage de programmation d’Apple, passe à la version 2. Apple veut accélérer encore le développement du langage. Cette version sera plus rapide : 6 ou 7,5 fois plus vite qu’avant. Il y a plein de nouveautés, mais surtout, Swift devient Open Source ! Grosse nouvelle, cela veut dire que le langage ne sera plus limité aux produits Apple seulement. Potentiellement, n’importe qui peut l’utiliser.

iOS9 est disponible dès aujourd’hui pour les développeurs. En juillet pour les bêtas publiques et à l’automne pour la version finale. Tous les appareils compatibles avec iOS 8 sont aussi compatibles avec iOS 9.

watchOS

Quelques semaines après le lancement de l’Apple Watch, on parle déjà d’un nouveau système. Tim Cook s’en amuse et invite Kevin Lynch pour nous parler de watchOS.

Nouvelle plateforme pour les développeurs, avec des applications natives cette fois. Apple croit en la technologie pour le poignet et les développeurs vont créer de nouvelles choses spécialement pour les montres.

macgpic-1433788212-7547842271855-sc-op

Complications : les développeurs pourront créer leurs propres versions ! On pourra ainsi avoir les heures de vol, le niveau de recharge d’une voiture, etc. Tous les cadrans qui ont des complications peuvent avoir ces complications crées par les développeurs.

macgpic-1433788272-7608560125479-sc-op

watchOS voyage dans le temps. La couronne digitale permet de revenir en arrière dans le temps ou avancer dans le futur pour connaître les prévisions météo, mais aussi les prochains rendez-vous, etc.

macgpic-1433788312-7647900727935-sc-op

 

Mode nuit : quand elle se recharge, la montre affiche en permanence l’heure. Le réveil change de son et on peut utiliser les deux boutons pour couper le réveil ou utiliser la fonction snooze.

macgpic-1433788595-7931577634349-sc-op

Les développeurs pourront toujours utiliser WatchKit et Kevin Lynch rappelle qu’un iPhone est toujours indispensable. Les applications natives pourront tourner directement sur l’Apple Watch et les performances seront « great », dit-il.

Les applications natives pourront utiliser un réseau Wi-Fi connu pour télécharger de nouvelles données. Les développeurs auront accès au microphone et pourront ainsi créer des dictaphones. Les capteurs de la montre pourront servir aux applications, ainsi que Taptic Engine. Les applications pourront créer des vibrations spécifiques. La couronne digitale est bien sûr utilisable dans les applications, par exemple pour changer la température d’un thermostat connecté.

WatchOS 2 sera disponible dès aujourd’hui pour les développeurs. Pas de bêta publique cette fois, mais la mise à jour sera disponible à l’automne, comme le reste des nouveautés du jour. Évidemment, cette mise à jour sera compatible avec toutes les Apple Watch. Heureusement.

C’est fini pour cette keynote Apple 2015, un bon cru ? Qu’en pensez-vous ?

Retour sur la Google IO 2015

C’est aujourd’hui qu’a eu lieu la Google IO 2015. Comme chaque année Google présente ses prochaines innovations pour l’année. A programme pas mal de nouveautés mais je resterais sur ce qui m’anime, le développement d’app Android.

Android M

Google annonce Android M, comme l’année dernière avec Android L, devenu par la suite Android Lollipop. Principale mission d’Android M, « optimiser l’expérience ». Six points clés d’Android M ont été présentés.

macgpic-1432831871-3167153487954-sc-op

Android M améliore le fonctionnement des permissions. Les permissions sont les autorisations que l’on donne à une application pour accéder à son calendrier, ses contacts, son numéro de téléphone… Avec Android M, on peut accorder certaines permissions et pas d’autres, alors qu’il fallait auparavant tout autoriser sans autre choix. C’est une amélioration bienvenu pour la confidentialité.

macgpic-1432831927-3222603201919-sc-op

Deuxième point clé : « Chrome custom tabs ». C’est comme avoir Chrome directement intégré à son application, avec ce que cela implique comme avantage : autocomplétion des formulaires, sauvegarde des données de connexion…

macgpic-1432832170-3465911409372-sc-op

3e point clé : « App links ». Les apps peuvent se lier les unes aux autres. Cela devrait faciliter le passage d’une app à une autre.

4e point clé : Android Pay. Une API de paiement qui prend en charge la NFC. Elle est présentée comme une « plateforme ouverte » que les développeurs peuvent utiliser librement. Elle fonctionne d’ores et déjà dans 700 000 points de vente aux États-Unis.

macgpic-1432832445-3740934077675-sc-op

5e point clé : la prise en charge native de la reconnaissance digitale. Les fabricants n’auront plus à développer leur propre solution pour intégrer des capteurs d’empreinte digitale.

macgpic-1432832572-3867994151144-sc-op

6e et dernier point clé : une meilleure autonomie. Grâce aux capteurs des terminaux, Android M reconnait quand ils ne sont pas utilisés depuis un moment et quitte les apps pour économiser de l’énergie.

Cloud Messaging, le service de push de Google, est maintenant compatible avec iOS. 70 milliards de messages sont envoyés chaque jour.

macgpic-1432836920-8215984641412-sc-op

Les développeurs peuvent personnaliser leur page sur Google Play pour mieux mettre en avant leurs apps.

Android Wear

Plus de 4 000 apps disponibles sur Android Wear. Fin avril, Tim Cook annonçait 3 500 apps sur Apple Watch.

macgpic-1432833322-4618327781086-sc-op

Aucune nouveauté pour l’OS, seulement quelques rappels des dernières mises à jour.

Android Studio

Android Studio passe en version 1.3 avec la prise en charge du C et C++. Polymer, le framework pour les interfaces, est finalisé. Le site CocoaPods devient le canal de distribution officiel pour les SDK iOS de Google.macgpic-1432836678-7974341488916-sc-op

Et vous, qu’avez vous pensé de cet keynote ? N’hésitez pas à partager et a débattre dans les commentaires.