การติดตั้ง Apollo iOS Client ในโปรเจกต์ Swift ด้วย CocoaPods
20 นาที
บทนำ ในส่วนนี้คุณจะได้เรียนรู้วิธีการติดตั้ง apollo ios client ในโปรเจกต์ swift ของคุณและทำการสอบถามข้อมูลจาก back4app โดยใช้มัน ข้อกำหนดเบื้องต้น ในการทำให้การเริ่มต้นนี้เสร็จสมบูรณ์ คุณต้องการ xcode แอปที่สร้างขึ้นที่ back4app ติดตาม บทเรียนการสร้างแอป parse ใหม่ https //www back4app com/docs/get started/new parse app เพื่อเรียนรู้วิธีการสร้างแอป 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 บันทึกไฟล์และเปิดเทอร์มินัล ไปที่โฟลเดอร์นั้นและพิมพ์ pod install เมื่อการติดตั้งเสร็จสิ้น คุณควรมีไฟล์ใหม่ที่มีรูปแบบ xcworkspace เปิดไฟล์นั้นด้วย xcode 2 ดึง schema ของคุณ คุณต้องมีไฟล์ชื่อ schema json ที่มี schema สำหรับ graphql endpoint ของคุณ มีสองวิธีในการดึง schema ทั้งหมดของคุณ การใช้ back4app graphql console การใช้ apollo เราจะพูดคุยเกี่ยวกับทั้งสองอย่าง เลือกอันที่คุณชอบที่สุด 2 1 ดึง schema ของคุณด้วย back4app graphql console ไปที่ graphql console ของแอปที่คุณต้องการดึง schema และที่ด้านขวาใต้แท็บ schema คลิกที่ปุ่มดาวน์โหลด 2 2 ดึง schema ของคุณด้วย apollo หากคุณต้องการใช้ apollo ก่อนอื่นคุณต้องติดตั้งเวอร์ชัน desktop โดยพิมพ์ npm install g apollo จากนั้น รันคำสั่งต่อไปนี้โดยแทนที่ค่าของ headers ด้วย appid และ masterkey ของคุณ apollo client endpoint= https //parseapi back4app com/graphql https //parseapi back4app com/graphql header="x parse application id yourappidhere" header="x parse master key yourmasterkeyhere" สิ่งนี้จะสร้างไฟล์ 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 } เพิ่มไฟล์นั้นไปยังไดเรกทอรี target ของคุณที่ระดับเดียวกับไฟล์ 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 script path="${pods root}/apollo/scripts" cd "${srcroot}/${target name}" "${script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift หากคุณกำลังใช้ xcode 11 beta ให้เพิ่มสคริปต์นี้แทน \# ไปที่ root ของการสร้างและกลับขึ้นไปที่ที่ spm เก็บเฟรมเวิร์ก apollo ios ที่ถูกตรวจสอบแล้ว cd "${build root}" cd " / /sourcepackages/checkouts/apollo ios/scripts" apollo script path="$(pwd)" if \[ z "${apollo script path}" ]; then echo "error ไม่สามารถหาสคริปต์ cli ในแพ็คเกจ spm ที่คุณตรวจสอบแล้ว; โปรดตรวจสอบให้แน่ใจว่าได้เพิ่มเฟรมเวิร์กลงในโปรเจกต์ของคุณแล้ว " exit 1 fi cd "${srcroot}/${target name}" "${apollo script path}"/check and run apollo cli sh codegen target=swift includes= / / graphql localschemafile="schema json" api swift 6 สร้างและเพิ่มไฟล์ api ของคุณไปยังเป้าหมาย สร้างโปรเจกต์ของคุณและไฟล์ที่ชื่อว่า api swift ควรจะถูกสร้างในไดเรกทอรีของ target ของคุณ ลากไฟล์ api swift ที่สร้างขึ้นไปยังเป้าหมายของคุณและตรวจสอบให้แน่ใจว่าได้ยกเลิกการเลือกช่อง “copy files if needed” ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบทุกเป้าหมายที่ไฟล์ 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 client 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 } หากคุณมีผู้ใช้ใด ๆ ในคลาสผู้ใช้ของคุณ ผู้ใช้คนแรก (ดัชนี 0) ควรจะถูกดึงมา ขั้นตอนที่เลือก รับการเน้นไวยากรณ์ คุณสามารถมีการเน้นไวยากรณ์ graphql บน xcode หากคุณต้องการ เพื่อให้บรรลุสิ่งนั้น โคลน xcode apollo repository https //github com/apollostack/xcode apollo ลงในคอมพิวเตอร์ของคุณ ปิด xcode หากมันกำลังทำงานอยู่ คุณอาจต้องสร้างโฟลเดอร์เหล่านี้ภายใน /library/developer/xcode mkdir /library/developer/xcode/plug ins /library/developer/xcode/specifications 4\ คัดลอก graphql ideplugin ไปยัง /library/developer/xcode/plug ins cp r graphql ideplugin /library/developer/xcode/plug ins 5\ คัดลอก graphql xclangspec ไปยัง /library/developer/xcode/specifications cp r graphql xclangspec /library/developer/xcode/specifications คุณอาจได้รับคำเตือนครั้งแรกเมื่อคุณเริ่ม xcode หลังจากติดตั้งส่วนเสริมเหล่านี้ เมื่อคุณยอมรับที่จะโหลดปลั๊กอิน คุณจะไม่เห็นคำเตือนนี้อีกต่อไป