iOS
Интеграция Apollo GraphQL клиента в Swift проект на iOS
22 мин
введение в этом разделе вы узнаете, как установить apollo ios client в ваш проект на swift и запрашивать данные из back4app с его помощью предварительные требования чтобы завершить этот быстрый старт, вам нужно xcode приложение, созданное в back4app следуйте учебнику по созданию нового parse приложения чтобы узнать, как создать приложение parse в back4app класс с некоторыми сохраненными данными (чтобы вы могли их извлечь) 1 получение apollo client в ваш проект xcode самый простой способ интегрировать apollo ios client использовать cocoapods https //cocoapods org/ чтобы интегрировать его, выполните следующие шаги создайте ваш проект xcode и в той же папке, что и ваш файл xcodeproj, создайте новый файл с именем podfile отредактируйте файл podfile и добавьте следующий код, изменив строку yourprojectnamehere на имя вашего проекта \# uncomment the next line to define a global platform for your project platform \ ios, '12 0' target 'yourprojectnamehere' do \# comment the next line if you're not using swift and don't want to use dynamic frameworks use frameworks! \# pods for conferenceplanner pod 'apollo' end сохраните файл и откройте терминал перейдите в эту папку и введите когда установка завершится, у вас должен появиться новый файл формата xcworkspace откройте этот файл с помощью xcode 2 получите ваши схемы вам нужен файл с именем schema json, содержащий схемы для вашей graphql конечной точки существует два способа получить вашу полную схему использование консоли back4app graphql использование apollo мы обсудим оба варианта выберите тот, который вам больше нравится 2 1 получите свои схемы с помощью консоли back4app graphql перейдите в свою консоль graphql для приложения, из которого вы хотите получить схему, и на правой стороне под вкладкой схема нажмите кнопку загрузить 2 2 получите свои схемы с помощью apollo если вы предпочитаете использовать apollo, сначала вам нужно установить настольную версию, введя затем выполните следующую команду, заменив значения заголовков на ваш appid и masterkey это создаст файл aschema json в качестве вывода 3 добавьте ваш schema json файл в проект добавьте файл schema json, который вы скачали или получили, в ваш проект в корневом каталоге это та же папка, где находится ваш файл appdelegate swift 4 создайте ваши graphql файлы теперь вы можете создать ваши graphql файлы с вашими файлами и мутациями эти файлы должны иметь расширение graphql и содержать как минимум один запрос или мутацию, чтобы apollo мог создать код swift полезной конвенцией является размещение запросов, мутаций или фрагментов рядом с кодом swift, который их использует, создавая \<name> graphql рядом с \<name> swift если у вас нет существующих graphql файлов в вашей файловой структуре, создайте очень простой запрос и добавьте его в graphql файл в вашей файловой структуре, чтобы, когда вы запустите шаг генерации кода, он действительно нашел что то если вы этого не сделаете, вы получите ошибку не найдены операции или фрагменты для генерации кода вот простой запрос, который в качестве примера возвращает пользователей parse 1 query findallusers{ 2 objects{ 3 find user{ 4 count 5 results{ 6 username 7 } 8 } 9 } 10 } добавьте этот файл в вашу целевую директорию на том же уровне, где находится ваш файл schema json 5 добавьте шаг сборки для генерации кода вы можете вызвать apollo как часть процесса сборки xcode, который автоматически получит и обновит файл schema json, чтобы ваши классы всегда отражали любые изменения, которые вы вносите, вызывая обертку check and run apollo cli sh обертка проверяет, совместима ли версия apollo, установленная на вашей системе, с версией фреймворка в вашем проекте если вы этого не проверите, вы можете потенциально сгенерировать код, который несовместим с кодом выполнения в фреймворке шаги следующие на вкладке настроек build phases вашего целевого приложения нажмите на значок + и выберите new run script phase в созданном run script измените его имя на generate apollo graphql api перетащите этот новый скрипт выполнения прямо над compile sources в вашем списке build phases, чтобы он выполнялся до компиляции вашего кода добавьте следующее в run script если вы используете xcode 11 beta, добавьте этот скрипт вместо 6 соберите и добавьте ваш файл api в цель соберите ваш проект, и файл с именем api swift должен быть создан в директории вашей цели перетащите сгенерированный файл api swift в вашу цель и убедитесь, что вы сняли отметку с чекбокса "копировать файлы, если необходимо" убедитесь, что вы проверили все цели, в которые необходимо включить файл api 7 настройка клиента теперь в вашем viewcontroller swift создайте вашу конфигурацию apollo и измените значения appid и clientkey 1 let apollo apolloclient = { 2 let configuration = urlsessionconfiguration default 3 configuration httpadditionalheaders = \[ 4 "x parse application id" "yourappidhere", 5 "x parse client key" "yourclientkeyhere" 6 ] 7 8 let url = url(string "https //parseapi back4app com/graphql")! 9 10 return apolloclient( 11 networktransport httpnetworktransport( 12 url url, 13 configuration configuration 14 ) 15 ) 16 }() 8 настройка клиента в вашем viewdidload вызовите ваш graphql запрос из клиента apollo 1 apollo fetch(query findallusersquery()) { result in 2 guard let data = try? result get() data else { return } 3 print(data objects? finduser results\[0] username) 4 } если у вас есть пользователи в вашем классе user, первый (индекс 0) должен быть получен необязательный шаг получить подсветку синтаксиса вы можете получить подсветку синтаксиса graphql в xcode, если хотите для этого клонируйте репозиторий xcode apollo https //github com/apollostack/xcode apollo на ваш компьютер закройте xcode, если он в данный момент запущен вам может понадобиться создать эти папки внутри /library/developer/xcode 4\ скопируйте graphql ideplugin в /library/developer/xcode/plug ins 5\ скопируйте graphql xclangspec в /library/developer/xcode/specifications вы можете получить предупреждение в первый раз, когда запустите xcode после установки этих дополнений как только вы согласитесь загрузить плагин, вы больше не увидите это предупреждение