IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Développeur iOS Swift Natif - Connaissances vidéo appréciées

Ile de France, Paris (75012) - Référence : ios
Mis en ligne le 4 septembre 2018 par louisvigneau (+ d'offres)
eleven life
Type de contrat :AutreCDIFreelance
Métier :Développeur informatique
Type d'entreprise :Autre type d'entreprise (client final)
Localisation :Ile de France, Paris (75012)
Salaire :de 36 000 €/an à 48 000 €/an
Télétravail :Pas de télétravail
Compétences requises :iOS, Swift, Xcode
Envoyer une candidature

Poste à pourvoir

Bonjour,

Nous recherchons un développeur iOS pouvant rejoindre une petite équipe présente actuellement à Bastille, dans Paris.

0. Description:
« Eleven Life est une application sociale qui vise à vous reconnecter avec les gens autour de vous, grâce à la vidéo.
C'est très simple. Vous avez seulement besoin de faire une petite vidéo sur ce que vous aimez faire dans la vie. Ensuite, choisissez quelques intérêts, et vous êtes prêt à rencontrer les gens autour de vous! 

Vous pouvez également profiter d'activités spécifiques avec les gens autour de vous. Si vous êtes prêt à faire un tennis par exemple, à un moment donné, vous pouvez trouver des gens qui veulent faire la même chose, juste au coin de la rue.

Si l'autre personne est d'accord, vous serez en mesure de discuter directement dans l'application. Si cette personne ne parle pas votre langue, nous offrons une fonction de traduction en direct dans le chat. Vous pouvez traduire tout ce que vous dites dans n'importe quelle langue.
Ce qui le rend intéressant est la vidéo. Être capable de vraiment voir les réactions des gens, entendre leur voix, cela fait vraiment la différence. »

Nous avons développé une application disponible aujourd’hui sur l’App Store, sous le nom de eleven life.
https://itunes.apple.com/fr/app/eleven-life/id1349667858?mt=8

Cette version présente sur le store ne contient que 20% des features imaginées, et pour l’instant elle est loin d’être parfaite sur un plan UX et sur un plan technique également. Beaucoup de travail reste à faire.

Aperçu bref des projets:
intégration de la eleven video library, intégration des features de groupes, intégration des features travel, améliorations UX, améliorations gestion iOS, Intégration de Twilio Video pour les appels, Intégration de Dropbox et autres services cloud, capture vidéo et traitement de l’image avec metal et des tables LUT, composition de vidéo en split screen, amélioration des performances, intégration de subtitles video pour le multilingue, créations d’extensions iOS multiples, traitement de l’audio et bien plus encore…

Je suis moi même développeur iOS et lead de ce projet, et j’ai aujourd’hui besoin d’une personne pour m’assister dans la grande quantité de travail que nous avons pour cette version iOS de l’application. Nous travaillerons donc sur ces sujets ensemble.

Cette application est uniquement disponible sur iOS pour le moment, nous sommes à la recherche également d’un développeur Android natif et l’un développeur web AngularJS.

Vous serez donc amené à travailler avec moi-même et une autre personne qui s’occupe du back-end AWS à plein temps.

Nous aimerions à terme que cela fonctionne dans ce sens:

1. S’adapter au fonctionnement actuel de l’application, aux process internes et à AWS.
2. Travailler sur l’application, participer à son amélioration et à ses nouvelles fonctionnalités.
3. Reprendre progressivement complètement le lead du développement iOS.

Ces étapes passeront plus ou moins vite en fonction de vos compétences et capacités d’adaptation rapide.

Cette position requiert une bonne connaissance de la création de vues custom, de la vidéo et de l’audio, et du multi-threading avancé. Le fonctionnement de l’application sur des appareils plus anciens est également une partie non négligeable du challenge.

Au cours des prochains mois, années, nous avons beaucoup de choses en vues pour cette application, aussi le travail et la diversité des types tâches, et des technologies utilisées ne manqueront pas.

Nous aimerions que cette personne vienne travailler dans nos locaux (à Bastille aujourd’hui), à temps plein.

Nous proposons de fixer une première rencontre afin d’en discuter ensemble.
N’hésitez pas à nous envoyer un message si vous avez des questions supplémentaires, ou pour la réponse à ce message :
louis@eleven.team

Merci.

Louis Vigneau.


Plus d'informations sur le stack et les pré-requis technologiques:
https://s3.eu-west-3.amazonaws.com/workplace-backupfiles/Public/iOS+Developer+2018-+elevenlife+SD.pdf

Profil recherché

Informations complémentaires sur l’application iOS:

- L’application est conçue 100% native, en Swift, avec Xcode
- Toutes les vues sont custom, conçues avec des NSLayoutConstraint, 100% code, 0% Interface Builder
- Realm est utilisé en tant que base de données locale de l’application
- AsyncDisplayKit (Texture) est utilisé pour les longues listes et tout ce qui requiert un long scrolling fluide
- Twilio Chat pour le chat
- Twilio Video (futur) pour les appels audio et vidéo

Cette application iOS communique avec un back-end entièrement hébergé chez AWS sur 5 zones de disponibilité.

A. Échanges avec l’API Client
Le workflow de communication entre le client et le backend est entièrement basé sur les SDK générés par AWS API Gateway. Des modèles d’objets sont créés du coté de API Gateway, et sont mis dans le code en Objective-C. Le processus n’est pas très complexe. Il faut cependant recréer des modèles pour la base de données locale.

B. Authentification
L’authentification se fait via AWS Cognito, utilisateur (phone number) et mot de passe. Dans le futur, il sera question d’un ajout de social login, qui sera également géré par AWS Cognito.

C. Stockage local de données
Toutes les données de l’application sont persistantes. Les données sont stockées dans la base locale Realm. Des écritures sur plusieurs threads sont réalisées fréquemment. Le multi-threading avec Realm pose certains problèmes qui ont presque tous été contournés. Il est éventuellement question de faire une transition vers coreData, cela dépend de votre connaissance de coreData en environnement multi-threading, NSManagedObjectContext etc...

D. Downloads et Uploads binaires
Les données sont pour l’instant transférés à l’aide de l’utilitaire iOS AWS S3: AWSS3TransferManager etc…

E. Assets, icons etc
Nous utilisons un workflow entièrement vectoriel grace à PaintCode qui transforme nos assets vectoriels en dessin coreGraphics.
Les autres assets venant du back-end sont tous en PDF vectoriels.



1. Items à maitriser absolument:

> Code & autres

- Swift, les généralités
- Swift, callbacks avancés
- Swift, extensions
- Swift, subclass inheritance
- Swift, generic types

- Bonne connaissance des commandes de CocoaPods
- Bonne connaissance de git

- Bonne connaissance des local et remote notifications sur iOS
- Bonne connaissance de APNS et de la gestion des certificats et des clés avec Apple Developer

- Connaissance avancée de Core Location


> UI

- Création de views sans interface builder, uniquement à l’aide de code et de NSLayoutConstraints
- Connaissance avancée de UIView, UIViewController, NSLayoutConstraint, UIScrollView, UIStackView, UIGestureRecognizer
- Bonne connaissance de CALayer
- Bonne connaissance de UIView.animate, UIView.transition


> Multi-threading sur iOS
- Gestion variées de dispatchQueues
- Création de threads uniques
- Gestion de threads avec et sans runLoop


> Experience avec la gestion de bases de données locales (type SQLLite, coreData ou Realm (Nous utilisons Realm))
- Gestion d’écriture dans la base de données sur plusieurs threads, avec gestion de la concurrence d’écriture et de lecture

> Une bonne compréhension de la concurrence d’exécution de beaucoup d’operations à la fois est importante
> Bonne connaissance de AVFoundation, AVPlayer, AVPlayerItem, AVCaptureSession



2. Serait grandement apprécié :

- Connaissance avancée de Realm Database
- Experience avec Realm en multi-threading avancé, notamment avec plusieurs instances ouvertes de Realm sur plusieurs threads en simultané

- Experience avec Metal
- Experience avec ARKit

- Experience avec les chats dont les messages sont persistants sur l’appareil (ex. Facebook Messenger)
- Experience avec la gestion d’operations (création, mise en queue, ré-essai, erreurs)
- Connaissance de Reachability

- Connaissance de AsyncDisplayKit (Texture) - Framework de UI maintenu par Pinterest et Facebook

- Gestion des appGroups
- Gestion des extensions Notifications, Siri etc…
- Bonne connaissance de git code merge, git pull requests, et toutes les fonctions de gestion du code à plusieurs sur git

- Bonne connaissance de CoreAnimation et des transitions de UIViewController

- Bonne connaissance des utilitaires d’analyse de la consommation d’énergie Xcode
- Bonne connaissance de Instruments

- Connaissance de CallKit
- Connaissance de Fastlane

- Connaissance du développement OS X
- Connaissance du développement AppleTV

- Bonne connaissance de la gestion mémoire sur iOS, ARC, weak/strong variables, et recherches de memory leaks

- Bonne connaissance des outils audio et video : AVAssetWriter, AVAsset, VideoToolbox, AudioToolbox, AVAudio, CVPixelBuffer (management of audio, video buffers), travail de l’image avec Metal, AudioToolbox, AVAudioMix, AVAudioUnitEffect…

- Bonne connaissance des formats vidéos H.264, H.265 (HEVC) et de l’encodage vidéo


Si vous ne connaissez pas tous ces items ce n’est pas très grave tant que vous êtes capable d’apprendre vite et efficacement.
N’hésitez pas à rechercher sur Google les différentes technologies que nous ne connaissez pas encore…

Description de la société

Eleven Life est une application sociale qui vise à vous reconnecter avec les gens autour de vous, grâce à la vidéo.
C'est très simple. Vous avez seulement besoin de faire une petite vidéo sur ce que vous aimez faire dans la vie. Ensuite, choisissez quelques intérêts, et vous êtes prêt à rencontrer les gens autour de vous! 

Vous pouvez également profiter d'activités spécifiques avec les gens autour de vous. Si vous êtes prêt à faire un tennis par exemple, à un moment donné, vous pouvez trouver des gens qui veulent faire la même chose, juste au coin de la rue.

Si l'autre personne est d'accord, vous serez en mesure de discuter directement dans l'application. Si cette personne ne parle pas votre langue, nous offrons une fonction de traduction en direct dans le chat. Vous pouvez traduire tout ce que vous dites dans n'importe quelle langue.
Ce qui le rend intéressant est la vidéo. Être capable de vraiment voir les réactions des gens, entendre leur voix, cela fait vraiment la différence.

Site web : www.elevenlife.com

Envoyer une candidature