Création d'un client pour iOS

@jfoucher bonne initiative, surtout si tu as envie d’apprendre le Swift !

Oui, je vois mais ça ressemble un peu trop à ce que je fais au boulot :smiley:

Exact, je cherchais un projet à faire en Swift, mais bon là j’ai peut-être été un peu ambitieux !!

Pour ceux que cela intéressent, j’ai travaillé hier sur l’adaptation de Cesium sur iOS (une merge request est ouverte sur le Git de Cesium).

Vous pouvez installer et tester un premier build via ce lien TestFlight: https://testflight.apple.com/join/9mfTVNPW

A noter que les images des splashscreens ont été faites très rapidement et peuvent donc apparaître déformées sur certains appareils.

Pour le reste tout fonctionne comme sur l’app Android, scan de QRCode inclus.

2 Likes

Ah bonne nouvelle ça je vais tester de suite !
Sinon j’ai pas mal avancé sur mon appli native (affichage des profils, des transactions, etc…)
Mais j’ai un problème pour créer et envoyer une transaction. Je fais un post sur {node}/tx/process avec le json suivant par exemple:

{"transaction":"Version: 10\nType: Transaction\nCurrency: g1\nBlockstamp: 225707-000001A536FAAA3FAB8F7AA12BE00520F8F0740C49F11E6FEB94F0F8D344454D\nLocktime: 0\nIssuers:\nEEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq\nInputs:\n490:0:T:FC4F40EA49C82CC337407AA6FF4E2BB53D86FB990C48F7F9373C54FB3291B119:1\nUnlocks: \n0:SIG(0)\nOutputs:\n1:1:SIG(CkuPX2gLqdb3aEmdY3oFQXa5nzEJ4JsGP1Gw9FPQyyX9)\n48:1:SIG(EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq)\nComment: Comment\niMHup7T6eISehvZhFHXQXSECCwN9xhXUHNikgcFpex63Odfmf4RGFMM+h3iUuQPnlgshLMv1ePqfN1iC2XK5Cw==\n"}

Mais la seule réponse que j’ai du serveur est la suivante :

["ucode": 1002, "message": Cannot read property 'length' of undefined]

Alors peut-être que ma transaction est malformée, ou que la signature n’est pas bonne, mais ce message d’erreur me semble vraiment bizarre…

Si vous avez le coup d’oeil pour voir ce qui cloche dans ma transaction Merci !!!

Pas mal l’appli, c’est exactement comme le site en fait.

J’en profite pour te remonter un bug qui est aussi présent sur l’appli web.
Quand on scroll l’arrière-plan reste en place
32

Tu as des outputs en base 1, la Ğ1 n’accepte pas encore la base 1.
Exprime tes sorties (outputs) en base 0.

Autrement, je pense que le format doit être au format le plus brut possible (raw), tu as des accolades de json autour.

Avec ce super outil j’ai modifié ton document pour obtenir le suivant.
Juste la signature qui n’est pas bonne :

Version: 10
Type: Transaction
Currency: g1
Blockstamp: 225707-000001A536FAAA3FAB8F7AA12BE00520F8F0740C49F11E6FEB94F0F8D344454D
Locktime: 0
Issuers:
EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq
Inputs:
490:0:T:FC4F40EA49C82CC337407AA6FF4E2BB53D86FB990C48F7F9373C54FB3291B119:1
Unlocks:
0:SIG(0)
Outputs:
1:1:SIG(CkuPX2gLqdb3aEmdY3oFQXa5nzEJ4JsGP1Gw9FPQyyX9)
48:1:SIG(EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq)
Comment: Comment
iMHup7T6eISehvZhFHXQXSECCwN9xhXUHNikgcFpex63Odfmf4RGFMM+h3iUuQPnlgshLMv1ePqfN1iC2XK5Cw==
1 Like

Super, merci pour le tuyau sur l’outil !
tu m’as mis sur la piste, en fait il y avait un espace avant le retour à la ligne après les Outputs…
Bon maintenant j’ai “Wrong unit base for outputs” mais ça correspond plus à ce que tu as dit, et au moins il ya du progrès.
Mais en gros les bases on s’en fout on les met tout le temps à 0 ou quoi ?

Pour l’instant on gère la base zéro uniquement.
Mais, à terme il faut savoir gérer les autres bases.
La June-test est déjà en base 1.
Dans ma conférence j’explique ça.
C’est pour gérer la rotation des nombres, sinon ça devient trop grand en base de données du fait de la création monétaire.

Oui oui bien sûr, en swift c’est pas compliqué à gérer il y a des types faits pour ça. C’est le nombre de zero à droite en fait si je suis clair dans mes maths :stuck_out_tongue:

C’est bizarre de pas laisser mettre n’importe quel base, je suis curieux de savoir quels endroits ça affecte dans le code…
Bon en tous cas en base 0 ça passe un grand merci !

La transaction est quelque part la dedans : https://g1.nordstrom.duniter.org/tx/history/EEdwxSkAuWyHuYMt4eX5V81srJWVy7kUaEkft3CWLEiq

Ce sont les nœuds et la blockchain qui font foit sur la base courante des sources.
Il est possible de transformer des sources d’une base inférieure vers la base courante.
Par contre, il n’est pas possible d’utiliser une base supérieure à la base courante.

1 Like

Au passage, on a une monnaie de test.
C’est plus pratique pour faire des tests sur l’envoi de documents.

1 Like

Bon c’est toujours pas très clair pour moi, mais en effet j’ai vu pas mal de code dans césium qui correspond à ce que tu dis. Je sais ou aller voir sur mon appli le jour ou ça se mettre à plus marcher en tous cas !
Et pour la monnaie de test tu as raison ça peut être pas mal

Bien joué @bpresles ! :slight_smile:
J’ai accepté la merge request à l’instant : impecable, merci !

Pour le livrable ios, à l’avenir, pourras t on voir ensemble ?

J’ai commencé un VagrantFile pour faire un build automatiquement depuis une VM OSx (car je n’ai pas de machine OSx opérationnelle… seule une trop vielle).

Pourras tu le tester ? et l’améliorer ? :slight_smile: le script à executer sur la VM est build-ios.sh (une doc est ici, à mettre à jour si besoin)

Il y a également un build-osx.sh pour créer l’application de bureau pour OSx.

Merci de ton aide !

1 Like

@jfoucher Je connais ce bug, mais difficile de corriger sans avoir d’IOS sous la main.
As tu soumis un bug sur le gitlab ?

@bpresles une idée ?

Le bug est aussi présent par exemple sur firefox en mode responsive. C’est de là que vient la capture d’écran d’ailleurs.

2 Likes

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