{"id":360255,"date":"2023-06-05T09:54:22","date_gmt":"2023-06-05T08:54:22","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=360255"},"modified":"2023-09-04T17:26:24","modified_gmt":"2023-09-04T16:26:24","slug":"compose-multiplatform-for-ios-passe-en-phase-alpha","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2023\/06\/compose-multiplatform-for-ios-passe-en-phase-alpha\/","title":{"rendered":"Compose Multiplatform for iOS passe en phase Alpha"},"content":{"rendered":"<p>Compose Multiplatform, le framework d\u00e9claratif de JetBrains pour la cr\u00e9ation d&#8217;interfaces utilisateur multiplateformes avec Kotlin, permet maintenant de cibler iOS&nbsp;! Vous pouvez donc utiliser Compose Multiplatform pour cr\u00e9er votre interface utilisateur une seule fois, 100&nbsp;% en Kotlin, et elle fonctionnera sur Android, iOS et plus.<\/p>\n<p>En bref, voici les informations essentielles sur cette publication&nbsp;:<\/p>\n<ul>\n<li>JetBrains a pass\u00e9 Compose Multiplatform for iOS en phase Alpha, ce qui signifie qu&#8217;il est pr\u00eat \u00e0 \u00eatre utilis\u00e9 dans le cadre d&#8217;exp\u00e9riences et de projets accessoires. Essayez-le et contribuez \u00e0 l&#8217;avenir des interfaces utilisateur mobiles partag\u00e9es avec Kotlin&nbsp;!<\/li>\n<li>Compose Multiplatform utilise des API d\u00e9j\u00e0 connues pour le d\u00e9veloppement d&#8217;interfaces utilisateur sur Android, il est donc tr\u00e8s facile pour les d\u00e9veloppeurs ayant une exp\u00e9rience du d\u00e9veloppement Android moderne d&#8217;\u00eatre rapidement op\u00e9rationnelles avec Compose Multiplatform for iOS. Cela permet \u00e9galement aux novices de baser leur apprentissage sur des concepts \u00e9tablis et sur les bonnes pratiques.<\/li>\n<li>Compose Multiplatform for iOS \u00e9tant en version Alpha, beaucoup de points sont encore en cours d&#8217;\u00e9laboration. Nous comptons sur la communaut\u00e9 pour nous aider, alors n&#8217;h\u00e9sitez pas \u00e0 l&#8217;essayer et <a href=\"#sharefeedback\">\u00e0 nous faire part de vos retours<\/a>&nbsp;!<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"CTA\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/lp\/compose-multiplatform\/\" target=\"_blank\" rel=\"noopener\">Commencer avec Compose for iOS<\/a><\/p>\n<p>JetBrains a pr\u00e9sent\u00e9 le projet Compose Multiplatform for iOS pour la premi\u00e8re fois lors de la KotlinConf&nbsp;2023. Pour voir le fonctionnement de Compose Multiplatform for iOS en d\u00e9tail, regardez l&#8217;enregistrement de la pr\u00e9sentation \u00ab&nbsp;Compose Multiplatform on iOS&nbsp;\u00bb de Sebastian Aigner et Nikita Lipsky&nbsp;:<\/p>\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Compose Multiplatform on iOS by: Sebastian Aigner and Nikita Lipsky\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/FWVi4aV36d8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n<h2 class=\"wp-block-heading\">Amener Kotlin Multiplatform au-del\u00e0 de la logique m\u00e9tier<\/h2>\n<p>Avec <a href=\"https:\/\/kotlinlang.org\/docs\/multiplatform.html\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform<\/a>, les d\u00e9veloppeurs Kotlin disposent d\u00e9j\u00e0 d&#8217;une approche du partage de code qui a fait ses preuves. Elle permet de partager la logique m\u00e9tier entre plusieurs plateformes sans devoir renoncer \u00e0 l&#8217;acc\u00e8s aux API et fonctionnalit\u00e9s sp\u00e9cifiques \u00e0 une plate-forme. Cette approche a \u00e9t\u00e9 valid\u00e9e pour de nombreuses applications en production, et de plus en plus d&#8217;entreprises l&#8217;utilisent afin d&#8217;\u00e9viter d&#8217;avoir \u00e0 dupliquer la logique dans leurs applications.<\/p>\n<p>Mais il manquait quelque chose \u00e0 Kotlin Multiplatform : une solution pour les cas dans lesquels on ne veut pas avoir \u00e0 cr\u00e9er et maintenir une interface utilisateur distincte pour chaque plateforme que l&#8217;on cible. Ce type de cas peut se rencontrer assez fr\u00e9quemment, par exemple si vous n&#8217;avez pas les ressources ou le nombre de personnes suffisants pour fournir des impl\u00e9mentations sur mesure pour chaque plateforme cible ou si vous devez livrer votre application le plus rapidement possible et n&#8217;avez pas le temps de maintenir manuellement plusieurs impl\u00e9mentations d&#8217;interfaces utilisateur synchronis\u00e9es.<\/p>\n<p>Compose Multiplatform apporte une solution pour ces situations en vous donnant la possibilit\u00e9 d&#8217;impl\u00e9menter votre interface utilisateur une seule fois et de la partager ensuite entre les plateformes cibles, qu&#8217;il s&#8217;agisse du cas typique de partage entre Android et iOS pour une interface mobile, ou d&#8217;interfaces pour desktop ou pour le web.<\/p>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356420\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/architecture.png\" alt=\"\" width=\"840\" height=\"743\"><figcaption class=\"wp-element-caption\"><em>Compose Multiplatform est une couche optionnelle pour les applications Kotlin Multiplatform qui vous permet de cr\u00e9er une seule fois des interfaces utilisateur d\u00e9claratives que vous pourrez utiliser pour de multiples plateformes cibles.<\/em><\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\">Con\u00e7u \u00e0 partir de Jetpack Compose<\/h2>\n<p>Compose Multiplatform est construit sur la base de <a href=\"https:\/\/developer.android.com\/jetpack\/compose\" target=\"_blank\" rel=\"noopener\">Jetpack Compose<\/a>, le framework d&#8217;interface utilisateur de Google recommand\u00e9 pour le d\u00e9veloppement Android moderne, qui est 100 % Kotlin. L&#8217;\u00e9quipe de JetBrains qui d\u00e9veloppe Compose Multiplatform collabore avec Google et apporte r\u00e9guli\u00e8rement des modifications aux r\u00e9f\u00e9rentiels de Jetpack Compose.<\/p>\n<p>Les API de Compose Multiplatform sont les m\u00eames que celles qui ont d\u00e9j\u00e0 \u00e9t\u00e9 test\u00e9es et approuv\u00e9es dans Jetpack Compose. Les personnes ayant d\u00e9j\u00e0 d\u00e9velopp\u00e9 des interfaces utilisateur Android modernes \u00e0 l&#8217;aide de Jetpack Compose peuvent ainsi facilement cr\u00e9er une interface utilisateur partag\u00e9e avec Compose Multiplatform.<\/p>\n<p>Regardez cet extrait de code Compose Multiplatform qui anime la visibilit\u00e9 d&#8217;une image lorsque l&#8217;utilisateur appuie sur un bouton&nbsp;et vous constaterez que les API sont vraiment les m\u00eames&nbsp;que dans Jetpack Compose :<\/p>\n<pre class=\"kotlin-code\" style=\"padding: 36px 0;\" data-highlight-only=\"true\">@Composable\nfun App() {\n    MaterialTheme {\n        var showImage by remember { mutableStateOf(false) }\n        Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {\n            Button(onClick = {\n                showImage = !showImage\n            }) {\n                Text(\"Toggle image\")\n            }\n            AnimatedVisibility(showImage) {\n                Image(\n                    painterResource(\"compose-multiplatform.xml\"),\n                    \"Compose Multiplatform Logo\"\n                )\n            }\n        }\n    }\n}\n<\/pre>\n<p>Si vous avez d\u00e9j\u00e0 travaill\u00e9 avec Jetpack Compose, la majeure partie de ce code doit vous sembler famili\u00e8re&nbsp;: Compose Multiplatform vous permet d&#8217;utiliser exactement les m\u00eames API, y compris la gestion d&#8217;\u00e9tat, la mise en page et m\u00eame les animations. Pour les t\u00e2ches sp\u00e9cifiques au syst\u00e8me de Jetpack Compose, comme le chargement de ressources, Compose Multiplatform fournit des alternatives pratiques qui fonctionnent sur toutes les plateformes, telles que la fonction <code>painterResource<\/code> dans l&#8217;extrait ci-dessus.<\/p>\n<p>Comme vous le voyez, ce code fonctionne \u00e0 la fois sur Android et iOS, avec des r\u00e9sultats similaires&nbsp;:<\/p>\n<figure class=\"wp-block-video\"><video src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/gif2.mov\" loop=\"loop\" muted=\"\" controls=\"controls\" width=\"300\" height=\"150\"><\/video><\/figure>\n<p>Sur iOS, le rendu des interfaces utilisateur de Compose Multiplatform provient d&#8217;une impl\u00e9mentation de canevas bas\u00e9e sur la biblioth\u00e8que graphique <a href=\"https:\/\/github.com\/JetBrains\/skiko\" target=\"_blank\" rel=\"noopener\">Skiko<\/a>. Sur Android, Compose Multiplatform est Jetpack Compose. Si vous d\u00e9cidez de migrer votre application vers des interfaces utilisateur sp\u00e9cifiques \u00e0 une plateforme, vous pourrez continuer \u00e0 utiliser votre application Compose Multiplatform sur Android sans aucun probl\u00e8me et conserver le code que vous avez \u00e9crit.<\/p>\n<h2 class=\"wp-block-heading\">Con\u00e7u \u00e0 partir de Kotlin Multiplateform<\/h2>\n<p>Les applications cr\u00e9\u00e9es \u00e0 l&#8217;aide de Compose Multiplatform sont des applications Kotlin Multiplatform, ce qui permet d&#8217;acc\u00e9der aux API de la plateforme telles que les capteurs, les pr\u00e9f\u00e9rences, le stockage des donn\u00e9es, la cryptographie, etc. en utilisant les m\u00eames m\u00e9canismes \u00e9tablis et \u00e9prouv\u00e9s. Elles peuvent \u00e9galement utiliser l&#8217;\u00e9cosyst\u00e8me des <a href=\"https:\/\/github.com\/terrakok\/kmm-awesome\" target=\"_blank\" rel=\"noopener\">biblioth\u00e8ques Kotlin Multiplatform<\/a>, constamment enrichi, qui fournit aussi bien des wrappers de bases de donn\u00e9es que des wrappers multiplateformes pour les SDK. Bien entendu, vous pouvez aussi continuer \u00e0 utiliser Kotlin Multiplatform ind\u00e9pendamment de Compose Multiplatform pour partager la logique m\u00e9tier, les r\u00e9seaux et autres abstractions.<\/p>\n<h2 class=\"wp-block-heading\">Interop\u00e9rabilit\u00e9 avec les vues SwiftUI et UIKit<\/h2>\n<p>Les applications ont besoin d&#8217;acc\u00e9der \u00e0 des fonctionnalit\u00e9s sp\u00e9cifiques \u00e0 l&#8217;appareil et, dans de nombreux cas, la couche d&#8217;interface utilisateur ne fait pas exception. Qu&#8217;il s&#8217;agisse d&#8217;int\u00e9grer un navigateur ou de lire une vid\u00e9o, vous souhaiterez peut-\u00eatre acc\u00e9der aux fonctionnalit\u00e9s iOS int\u00e9gr\u00e9es d&#8217;iOS pour enrichir l&#8217;exp\u00e9rience de utilisateur.<\/p>\n<p>Pour r\u00e9pondre \u00e0 ce besoin, la version Alpha de Compose Multiplatform propose un prototype pour l&#8217;interop\u00e9rabilit\u00e9 bidirectionnelle sur la couche d&#8217;interface utilisateur. En utilisant <code>UIKitView<\/code>, vous pouvez int\u00e9grer \u00e0 votre interface utilisateur partag\u00e9e des widgets complexes sp\u00e9cifiques \u00e0 une plateforme, tels que des cartes, des vues web, des lecteurs multim\u00e9dias et des flux de cam\u00e9ra. Dans l&#8217;autre sens, via <code>ComposeUIViewController<\/code>, vous pouvez int\u00e9grer des \u00e9crans Compose Multiplatform dans des applications SwiftUI, ce qui vous aidera \u00e0 adopter progressivement Compose Multiplatform dans les applications iOS.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356434\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/interop-2800x1454.png\" alt=\"\" width=\"2800\" height=\"1454\"><p><\/p>\n<figcaption class=\"wp-element-caption\"><em>Compose Multiplatform sur iOS permet une interop\u00e9rabilit\u00e9 bidirectionnelle avec les interfaces utilisateur natives. Vous pouvez ainsi int\u00e9grer des vues d&#8217;interface utilisateur complexes telles que MKMapView de MapKit \u00e0 votre interface Compose ou des \u00e9crans Compose \u00e0 une application SwiftUI.<\/em><\/figcaption>\n<\/figure>\n<h2 class=\"wp-block-heading\">Atteindre une exp\u00e9rience utilisateur de premier ordre<\/h2>\n<p>Compose Multiplatform for iOS \u00e9tant actuellement en phase Alpha, un certain nombre de points sont encore en cours d&#8217;\u00e9laboration. Nous voulons nous assurer de prendre en consid\u00e9ration tous les aspects qui permettent de rendre l&#8217;exp\u00e9rience fournie par les applications Compose Multiplatform conviviale et naturelle, o\u00f9 qu&#8217;elles soient utilis\u00e9es. Cela concerne en premier lieu les interactions les plus \u00e9l\u00e9mentaires qui d\u00e9finissent le ressenti fondamental d&#8217;utilisation d&#8217;une application, comme les gestes et les mouvements de d\u00e9filement, mais aussi les principes de navigation et les transitions, ainsi que les interactions complexes telles que la s\u00e9lection de texte, la gestion des entr\u00e9es ou les menus contextuels.<\/p>\n<p>Il est \u00e9galement important que les applications Compose Multiplatform fournissent des int\u00e9grations d&#8217;accessibilit\u00e9 robustes et respectent les choix des utilisateurs, c&#8217;est pourquoi nous proposons une int\u00e9gration \u00e9troite avec les m\u00e9canismes iOS sous-jacents comme la fonctionnalite text-to-speech du syst\u00e8me et les pr\u00e9f\u00e9rences de zoom et de contraste d\u00e9finies par les utilisateurs sur leurs appareils.<\/p>\n<p>Il s&#8217;agit de toute \u00e9vidence d&#8217;un ensemble diversifi\u00e9 et \u00e9tendu de priorit\u00e9s. et accorder \u00e0 chacun le degr\u00e9 d&#8217;attention requise pour que Compose Multiplatform sur iOS offre la meilleure exp\u00e9rience utilisateur possible. Ce faisant, nous tenons \u00e0 nous assurer de traiter les besoins des utilisateurs en priorit\u00e9, c&#8217;est pourquoi <a href=\"#sharefeedback\">nous vous invitons \u00e0 nous faire part de vos retours<\/a>&nbsp;!<\/p>\n<p>La fluidit\u00e9 des performances, y compris sur des \u00e9crans \u00e0 taux de rafra\u00eechissement \u00e9lev\u00e9, est un autre facteur essentiel \u00e0 la qualit\u00e9 de l&#8217;exp\u00e9rience utilisateur, les \u00e9quipes Compose Multiplatform et Kotlin\/Native collaborent donc \u00e9troitement afin d&#8217;am\u00e9liorer les performances des interfaces utilisateur partag\u00e9es sur iOS.<\/p>\n<h2 class=\"wp-block-heading\">Th\u00e8mes pour Compose Multiplatform for iOS<\/h2>\n<p>Le rendu de Compose Multiplatform sur iOS reposant sur un canevas, les applications iOS et Android ont la m\u00eame apparence par d\u00e9faut. Actuellement, Compose Multiplatform fournit directement les widgets Material et Material&nbsp;3 sur toutes les plateformes. Vous connaissez peut-\u00eatre d\u00e9j\u00e0 ces widgets pour les applications Android. Gr\u00e2ce \u00e0 la fonctionnalit\u00e9 de g\u00e9n\u00e9ration de th\u00e8me int\u00e9gr\u00e9e, vous pouvez ajuster l&#8217;aspect et la convivialit\u00e9 de ces widgets pour refl\u00e9ter votre image de marque, soit de la m\u00eame mani\u00e8re sur toutes les plateformes, soit avec un th\u00e8me sp\u00e9cifique pour chaque plateforme.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356445\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/widgetdesign.png\" alt=\"\" width=\"2396\" height=\"990\"><p><\/p>\n<figcaption class=\"wp-element-caption\"><em>Actuellement, les applications mobiles cr\u00e9\u00e9es avec Compose Multiplatform fournissent directement les widgets Material. Vous pouvez en personnaliser l&#8217;apparence et l&#8217;ergonomie, cr\u00e9er vos propres composants d&#8217;interface et m\u00eame appliquer un th\u00e8me sp\u00e9cifique \u00e0 une plateforme.<\/em><\/figcaption>\n<\/figure>\n<p>L&#8217;un des points cl\u00e9s pour un framework d&#8217;interface utilisateur multiplateforme est de savoir dans quelle mesure les \u00e9l\u00e9ments doivent correspondre \u00e0 l&#8217;apparence et \u00e0 l&#8217;ergonomie des plateformes cibles. Pour le moment, l&#8217;\u00e9quipe JetBrains n&#8217;a pas encore d\u00e9cid\u00e9 si elle allait fournir des \u00e9l\u00e9ments d&#8217;interface utilisateur d&#8217;apparence native ou standard. Comme il s&#8217;agit d&#8217;un point essentiel de l&#8217;exp\u00e9rience utilisateur de Compose Multiplatform, nous ne voulons pas prendre de d\u00e9cision sans avoir recueilli les retours de la communaut\u00e9 au pr\u00e9alable, et nous vous invitons \u00e0 nous faire <a href=\"#sharefeedback\">part de vos r\u00e9flexions et avis<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Essayez Compose Multiplatform for iOS&nbsp;!<\/h2>\n<p>Nous esp\u00e9rons vous avoir donn\u00e9 envie d&#8217;essayer Compose Multiplatform for iOS&nbsp;! Comme \u00e9voqu\u00e9 plus haut, plusieurs points sont encore en cours d&#8217;\u00e9laboration, mais beaucoup d&#8217;autres fonctionnent d\u00e9j\u00e0 tr\u00e8s bien et n&#8217;attendent qu&#8217;\u00e0 \u00eatre test\u00e9s&nbsp;!<\/p>\n<p>Nous proposons plusieurs moyens pour se familiariser avec la version Alpha de Compose Multiplatform for iOS, notamment des exemples d&#8217;applications et des mod\u00e8les de projets.<\/p>\n<h3 class=\"wp-block-heading\">Premiers pas avec le mod\u00e8le<\/h3>\n<p>Pour commencer \u00e0 \u00e9crire vos propres applications pour Android et iOS avec Compose Multiplatform, le plus simple est d&#8217;utiliser le <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform-ios-android-template\" target=\"_blank\" rel=\"noopener\">mod\u00e8le GitHub<\/a> officiel, qui s&#8217;accompagne d&#8217;un tutoriel pour vous aider \u00e0 r\u00e9aliser votre premi\u00e8re application Compose Multiplatform.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"CTA\" href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform-ios-android-template\/#readme\" target=\"_blank\" rel=\"noopener\">Commencer avec Compose for iOS<\/a><\/p>\n<h3 class=\"wp-block-heading\">D\u00e9couvrez Compose for iOS avec des applications de d\u00e9mo<\/h3>\n<p>Un bon moyen de se familiariser avec une nouvelle technologie est d&#8217;en voir des exemples d&#8217;utilisation. Nous avons pr\u00e9par\u00e9 plusieurs exemples de projets pour pr\u00e9senter Compose Multiplatform sur iOS et ses autres cibles, que vous pouvez trouver dans le <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/tree\/master\/examples\" target=\"_blank\" rel=\"noopener\">r\u00e9f\u00e9rentiel Compose Multiplatform<\/a>.<\/p>\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356456\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/sampleapps-2800x1626.png\" alt=\"\" width=\"840\" height=\"487\"><\/figure>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"CTA\" href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/tree\/master\/examples\" target=\"_blank\" rel=\"noopener\">D\u00e9couvrir des exemples de projets<\/a><\/p>\n<p>D&#8217;autres exemples de projets, comme <a href=\"https:\/\/github.com\/Kotlin\/kmm-production-sample\/tree\/compose-app\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform Mobile Production Sample<\/a>, comportent une branche qui contient une impl\u00e9mentation d&#8217;interface utilisateur bas\u00e9e sur Compose Multiplatform, ce qui permet de voir les diff\u00e9rences et les similitudes entre le partage de la logique m\u00e9tier seule et le partage de la couche d&#8217;interface utilisateur de l&#8217;application en plus de la logique m\u00e9tier.<\/p>\n<h3 id=\"sharefeedback\" class=\"wp-block-heading\">Partagez vos retours d&#8217;exp\u00e9rience&nbsp;!<\/h3>\n<p>Nous souhaitons faire \u00e9voluer Compose Multiplatform for iOS en fonction de vos besoins prioritaires.<\/p>\n<p>Aidez-nous \u00e0 vous aider en nous signalant tout probl\u00e8me, en nous indiquant les API manquantes selon vous et en nous demandant les fonctionnalit\u00e9s suppl\u00e9mentaires dont vous voudriez disposer. Vous pouvez nous faire part de vos commentaires et demandes dans <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/issues\" target=\"_blank\" rel=\"noopener\">l&#8217;outil de suivi des tickets du projet<\/a>.<\/p>\n<p>Si vous souhaitez \u00e9changer avec les membres de l&#8217;\u00e9quipe Compose Multiplatform ou d&#8217;autres d\u00e9veloppeurs, nous vous invitons \u00e0 rejoindre la discussion sur le <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose-ios\" target=\"_blank\" rel=\"noopener\">Slack de Kotlin<\/a>. Vous trouverez les discussions sur Compose Multiplatform for iOS dans le canal <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose-ios\" target=\"_blank\" rel=\"noopener\">#compose-ios<\/a>. Dans <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose\" target=\"_blank\" rel=\"noopener\">#compose<\/a>, vous pouvez discuter de sujets g\u00e9n\u00e9raux en lien avec Compose Multiplatform et Jetpack Compose.<\/p>\n<p>Nous avons h\u00e2te de voir ce que vous allez cr\u00e9er avec Compose Multiplatform&nbsp;!<\/p>\n<h2 class=\"wp-block-heading\">Voir aussi<\/h2>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2023\/04\/kotlinconf-2023-retour-sur-la-keynote-d-ouverture\/\">KotlinConf 2023&nbsp;: retour sur la keynote d&#8217;ouverture<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/10\/compose-multiplatform-1-2-is-out\/\">Compose Multiplatform&nbsp;1.2 est disponible<\/a><\/li>\n<\/ul>\n\n\n<p><\/p>\n\n\n\n<p><em>Article original en anglais de<\/em> :<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":360282,"comment_status":"closed","ping_status":"closed","template":"","categories":[956,89],"tags":[8144,6706],"cross-post-tag":[6256],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/360255"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=360255"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/360255\/revisions"}],"predecessor-version":[{"id":360315,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/360255\/revisions\/360315"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/360282"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=360255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=360255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=360255"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=360255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}