Création d'un client pour iOS

OK, bug corrigé !

2 Likes

Olé !! :clap::clap:

Bonsoir Benoit (@kimamila),

Je vais essayer ta VM VagrantFile. Cela étant dit, le .app que te génère IONIC n’est pas installable, car il faut le signer ce qui génèrera un IPA.

Personnellement j’ai fait globablement ce que fait ton script build-ios.sh, puis ensuite j’ai fais, comme l’indique la doc de IONIC, depuis XCode une archive, avec un provisioning profile de distribution, associé à mon certificat de signature de développeur, puis uploadé chez Apple, ce qui m’a permis de ensuite proposer en test.

Je vais regarder si cela peut être scripté. Par contre je ne suis pas sûr que la livraison du build sur Apple Connect soit scriptable.

@kimamila
J’ai réussi à charger (enfin) l’image de la VM, mais elle ne démarre pas, si je regarde dans VirtualBox (j’ai la version 6.0.8 avec extension pack 6.0.8), cela reboot en boucle, car ça fait un kernel panic à un moment.

Par contre j’ai mis à jour les instructions dans le fichier https://git.duniter.org/bpresles/cesium/blob/feature/ios-support/doc/build_ios.md
Je te laisse les consulter et voir si tu y arrives dans ta VM Vagrant.

Quand j’aurai un peu plus de temps, j’essaierai d’ajouter Fastlane pour faire le build et le déploiement (il peut aussi servir pour Android) de manière automatique.

Sinon, je suis disposé à faire les builds iOS si tu le souhaites. Depuis https://appstoreconnect.apple.com/access/users, tu as la possibilité de m’octroyer les droits pour gérer la publication d’une app en m’ajoutant, y compris gérer tout ce qui est certificats, provisioning profile (case à cocher "accès aux certificats, identifiants et profils)… Mon Apple ID est bpresles@mac.com

En attendant j’ai fais un nouveau build TestFlight avec mon compte Apple, incluant la correction sur le scrolling: https://testflight.apple.com/join/9mfTVNPW

2 Likes

Bonsoir à tous, alors pour info le code source de l’appli est disponible ici : https://github.com/jfoucher/gios (j’ai changé le nom pour qu’il n’y ai pas de confusion avec Cesium) J’ai également rajouté quelques screenshots dans le readme.

Pour l’instant c’est un portefeuille très simple qui permet juste de voir les comptes et leurs transactions, de créer de nouvelles transactions et de voir le détail de transactions passées.

La première authentification est par salt / mot de passe puis par Touch ID / Face ID si le téléphone en dispose. (Dans ce cas la paire de clé est stockée dans le keychain iOS)

Si vous pouvez jeter un oeil et me dire ce que vous en pensez ça serait super. C’est mon premier projet en Swift, alors le style de code est très disparate, j’ai pas mal appris entre le début et la fin !!

5 Likes

Hello @jfoucher,

Dans un post précédent, je cherchais justement à créer un repo natif pour la G1.
Je viens de regarder ton repo et c’est vraiment pas mal ce que tu as fais en si peu de temps :open_mouth: :slight_smile:

Je viens de créer une branche improvments/architecture. Si tu veux qu’on en parle, n’hésite pas à m’envoyer un MP :slight_smile:
Je suis dans le développement iOS depuis 3 ans maintenant, donc si tu cherches quelqu’un pour contribuer au projet, je pourrais le faire ponctuellement.

Sinon pour répondre à @Moul :

Pourquoi ne travailles-tu pas sur l’intégration de Césium sur iOS ? Il me semble avoir vu quelque chose passer à ce sujet. Veux-tu une application native ?
Pourquoi iOS, vois-tu un avenir pour un client de monnaie libre sur cette plateforme ultra-fermée ?

Le fait de développer des applications natives sera toujours mieux que des applications hybrides (sinon AirBnb n’aurait jamais procédé à la refonte totale de ses deux applications par exemple), mais sur le long terme, l’avantage au natif prime largement.
Bien sûr, c’est un autre débat :slight_smile:
Bien que la plateforme soit “ultra-fermée”, ne pas développer cette application pour iOS reviendrait à fermer la porte de la G1 pour ces utilisateurs malheureusement… :confused:

En espérant contribuer à la plateforme :fist::smiley:

1 Like

Pour moi, cela dépend aussi des forces disponibles.
Pour la petite histoire, nous étions plusieurs développeurs à avoir débuté une application native Android mais elle a été totalement dépassée en peu de temps, du fait de l’évolution rapide du protocole Duniter, à l’époque, et remplacée par Cesium, qui a eu rapidement l’avantage d’être portable compatible sur toutes plateformes. Ainsi les premiers usages intensif ont été fait sur la version Web (lors des RML7 à Laval) alors que la cible que j’avais en tête était Android…

L’avantage du PWA (Progressive Web Application) est qu’on a pas à anticiper les plateformes cibles. Ca vient avec les usages.

Voilou.

Ceci dit, plusieurs outils complètement recodés permettent une plus grande robustesse, en cas de failles.

Quelques conseils, si vous le permettez (que j’appliquerai dans Cesium 2):

  • Faire du multi-noeuds autant que possible;
  • Avoir une BDD interne, pour avoir un cache durable d’une session à l’autre (Cesium n’en a quasiment pas) avec les TX du compte, les contacts, etc.

Amusez-vous bien ! (c’est quand même mieux si on s’éclate en codant ! :slight_smile: )

3 Likes

Je vous invite quand même, pour avoir une idée, à tester les capacités des applications sous Ionic v4, pour iOS. Niveau performance et interface proche du natif, on est plutot bon. (Cesium est en Ionic v1, mais Cesium 2 sera e, Ionic 4).

Par ailleurs, n’oubliez pas que les évolution du protocole ajouterons une couche de communication GraphQL. Pensez à l’intégrer d’emblé…

2 Likes

Entièrement d’accord avec toi ! Si nous pouvons former deux équipes natives cela sera bien mieux. Par contre j’avoue que s’il n’y a personne en iOS, l’hybride devient une solution plus qu’envisageable.

Je prends en compte tout ces conseils, y compris pour GraphQL :slight_smile:
J’en rediscuterais avec Jonathan pour les intégrer rapidement, voir comment on peut s’arranger.

Bien sûr :smiley: s’il n’y a pas de fun ça devient moins passionnant haha

Pour info @Afx est maintenant contributeur au repo sur Gtihub, il a déjà commencé à revoir la structure de l’appli pour mettre un peu d’ordre dans mon plat (que dis-je, ma bassine) de spaghettis ! Merci !!

Dernières fonctionalités en date :

  • Possibilité de chiffrer les commentaires d’une transaction pour le destinataire uniquement.
  • Possibilité de choisir le destinataire d’une transaction par QR code
  • Possibilité d’afficher le QR code d’un utilisateur en cliquant sur son avatar.
4 Likes

Sympa !
Mais quel norme as tu utilisé ?
Car il faut que cela sont portable entre logiciels clients…

Le code qui encrypte les commentaires est ici

En gros je reconstitue la paire de clé depuis le seed de l’utilisateur (obtenu avec scrypt(identifiant, mot de passe) puis je convertis cette paire de clé de signature en crypto_box_keypair avec convertEd25519KeyPairToCurve25519. Je fais pareil avec la clé publique du destinataire, et enfin j’encrypte le commentaire.

Pour déchiffrer je fait pareil mais à l’envers :wink:

Je pense que ces fonctions de conversion de clé sont aussi dispo dans libsodium js ce qui permettrait d’intégrer la fonctionnalité dans cesium par exemple.

Bonjour,

Après une période de tests publiques, les apps Cesium 1.4.6 et GChange 0.9.2 ont été publiées sur l’AppStore iOS.

Elles ne sont pas totalement exemptes de bugs, disons qu’il y a les mêmes bugs que sur la version Android, et elles n’affichent pas toutes les fonctionnalités sur iPad en mode paysage, mais cela permet déjà d’offrir une version publiquement disponible pour les utilisateurs d’appareils iOS, en particulier d’iPhone.
Par rapport à la version PWA, cela offre la possibilité de scanner les QRCode notamment.

Cesium : https://apps.apple.com/fr/app/cesium-ğ1/id1471028018?l=fr&ls=1
GChange: https://apps.apple.com/fr/app/ğchange/id1479252045?l=fr&ls=1

7 Likes