paint-brush
Imayna Xcode Proyectoykita achka plataformakunapaq ruwanki tukuy Apple Ecosistema kaqpiby@darrylbayliss
165 ñawinchasqakuna Musuq historia

Imayna Xcode Proyectoykita achka plataformakunapaq ruwanki tukuy Apple Ecosistema kaqpi

by Darryl Bayliss9m2025/02/12
Read on Terminal Reader

Nishu unay; Ñawinchanapaq

Yachay imayna ruwayta Xcode Proyectoyki achka plataformakunapaq tukuy Apple Ecosystem kaqpi.
featured image - Imayna Xcode Proyectoykita achka plataformakunapaq ruwanki tukuy Apple Ecosistema kaqpi
Darryl Bayliss HackerNoon profile picture
0-item
1-item

Junio killapi 2023 watapi, Apple Vision Pro willasqanmanhina, huk yuyayniyuq karqani, chaymi allinta llamkanman uyarinapaq —huk huñusqa videokuna bucleyuq sapa p'unchaw llamk'asqaykiwan kuska pukllachkanku. Ñam huk app kayta ruwayta atiq karqani sutichasqa Christmas Chill , imapas ruwasqay maypachachus 1 kaq Apple TV yanapakuq huk App Store ruwasqa karqan. Chayqa huk huñusqa videokuna bucleyuqta rikuchin, chaytataq raymipaq telón de fondo hina llamk'achiy atikunki.


Sapa wata inviernopi, iskay kimsa p'unchawta allinchani, musuq contenidota yapani, chaymanta código base nisqa allinchani. Huk aswan hatun tikray ruwasqa llamk'anapaq hamurqan diciembre killapi 2023 watapi, mayk'aq UI UIKit kaqmanta chaymanta Storyboards kaqmanta SwiftUI kaqman astasqa karqa.


Bueno, aswantaqa migrasqa. Necesitarqani huk AVPlayer-wan yanapasqa qhawayta huk UIViewRepresentable kaqpi p'istuykusqa. Huk hatun API UIKit chaymanta SwiftUIpura interoperabilidad quq, sichus hayk'aqllapas necesidadpi kanki.


Ñuqaqa huk chhika iskayrayasqa karqani aswan utqaylla astakunaypaq imaynachus allin hamut'ayniyuq karqani Declarative UI kaqmanta chaymanta hamut'ayninkunamanta wak llamk'aykunamanta React chaymanta Jetpack Compose kaqwan. Chayqa ñuqapaq tikrakurqa Apple riqsichisqanwan chaymanta SwiftUI yanapakuyninwan. Christmas Chill huk sumaq proyecto karqan Apple Dev yachayniykunata kunankama kananpaq, chaymanta anchata munarqani experienciata tariyta app hukniray dispositivokunaman mast'arispa.


Huk kuti 2023 SwiftUI kaqman astakuy Christmas Chill kaqpaq tukusqaña kaptin, 2024 watapi Vision Pro yanapakuy yapanaypaq puririrqani. Uraypi imaynatachus chayta ruwarqani chaymanta imatachus yuyaychani sichus qam kikiykipaq appsniykipaq kaqllata ruwayta munanki.

Musuq Plataformata Yapay

Qallarinapaq, proyectoqa Vision Propaq huk destino hina ruwayta atinan tiyan; kayta ruwayqa admirakuypaq facilmi! Xcode ukhupi, .xcodeproj willañiqita akllay, chaymanta Yanapasqa Destinokuna urayk'aypi, yapay ñit'inata ñit'iy.


Yanapasqa Destinos nisqakuna



Huk urayk'achiq llapa Apple plataformakuna tarikuqmanta rikurin. Munasqa plataformapi makiwan kuyuchiy huk chayana hina yapanaykipaq, kayhinapi, Apple Vision, chaymanta ñit'iy Apple Vision musuq rikuriq t'aqapi.


Apple Vision Pro Destino nisqaman yapay



Huk huch'uy popup rikurimunqa willasunaykipaq tikraykunamanta Xcode ruwanan tiyan chaymanta chay meta kaqman. Atichiy nisqapi ñit'iy.


Destino Yanapakuyta atichiy


Chaymanta, appta ruway visionOS Simulator kaqwan. Sichus huk Vision Pro makiykipi kanki, kamachiykunata tariyta atikunki imayna dispositivoykiman churanaykipaq kaypi .


Huñuy pachapi, yaqapaschá Xcode huñuq pantaykunata tarinqa, chaymanta/utaq ruwana urmaykunqa. Kayqa suyasqa hinaspa ruway pacienciaypi. Kaymanta, proyectoykipi pantaykunata allichanayki tiyan chay app huñunankama chaymanta manaña urmanankama.


Ñuqapa casoypi, kayqa 30 minuto muyuriqpi hapirqa, huk chikanpi gracias ruwasqayku sinchi llamkayta UIKitmanta SwiftUIman ñawpaqta appta migraymanta!

Bloques de Compilación Condicionales nisqa

SwiftUI, ukhunpi, huk achka plataforma marco kaq, niyta munan huk chikan plataformapaq SwiftUI codigo huñuspalla, rikchayninta tikranqa. Estilo plataformata chaymanta imaymana métodos de interacción nisqakunata qhawarispa.


Sichus kay yanapakun usqhaylla ñawpaqman puriyta wiñachiy pachapi, aswan kamachiyta munankiman imayna ruwana rikhurisqanmanta chaymanta sapa sapalla plataforma kallpankunamanta aprovechayta. Huk allin ejemploqa Vision Pro kaqpa Immersion atiyninkuna; SwiftUI huk API kaypaq qun ImmersiveSpace kaqnintakama , huk API visionOS kaqllapaq.


Sichus kay API llamk'achiyta munarqanki Apple TV kaqpaq llamk'ayta huñuchkaspa, Xcode huk pantayta wikch'unqa kay API mana kasqanmanta willaspa.


Chhaynaqa, ¿ima allichaytaq kanman kay situacionmanta karunchakunapaq? Kutichiyqa Bloques de Compilación Condicionales nisqawanmi hamun. Huñusqa Bloques nisqakunaqa codigo t'aqakunam, hayk'aq huñuq bloque ukhupi codigo huñunan kasqanmanta kamachiykunata quq.


Imaymana condicionkunata yanapaptinkupas, aswan allin necesidadniykupaq mayqin plataformapaqchus código huñusqa kachkan chayta riqsiymi. Kaytaqa pisi chirukunallawanmi ruwayta atinki:


 var body: some Scene { #if os(tvOS) WindowGroup { HStack { Text("I am running on tvOS!") } } #elseif os(visionOS) ImmersiveSpace(id: "MyImmersiveSpace") { } #endif }


Huk sumaq ruwana Xcode ruwan bloquekuna huñusqa condicional yanapakuypaq, sut'i ruwanapaq ima código huñunqa huñunapaq akllasqa plataformamanta. Hinallataqmi pisilla chinkanqa codigo mana huñusqa kanqa.


Bloques de Compilación Condicionales nisqa

Inyección de Dependencia via Fases de Construcción nisqawan

Huk aswan allin trucokuna tarisqaymi Compilar Fuentes chaymanta Copy Bundle Resources ruway fasekuna huk forma dependencia inyección hina llamk'achiy. Kay ruwanakuna purinku mayk'aq app ruwasqa kachkan chaymanta tarikunman Fases ruway ñiqipi Proyecto Xcode kaqpi.


Fases de Construcción nisqa


Pukyukuna huñuy llasa uqhariyta ruwan pukyuta qillqap llikanta makina codigoman huñuymanta. Swift, Objetivo-C, C/C++ nisqapas kaptinpas.

Copia Bundle Recursos llapa tupaq yanapakuykunata ruwana metapaq App Bundle kaqman copian. Huk waqaychana clasekuna llapa apppa códigonpaq chaymanta yanapakuyninkunapaq siq'ikuna, videokuna, localizable cadenakuna chaymanta aswan ima.


Kay iskay ruway phasikuna achka flexibilidadta qun ruwanakunaman sapa musuq meta kikin ruway fasekuna qun, chaymanta iskay llamkanakuna patamanta. Whitelabel ruwanakuna huk ñanta qun negociokuna ruwayninkuta ruwanapaq kay técnica llamk'achinku, wakkuna ukhupi.


Ichapas tarinki hukniray contenidota quyta munanki kikiykipaq ruwanakunaykipaq, ima plataformapi purisqankuman hina. Kay ruway fasekunata allinniykupaq llamk'achisun chaymanta iskay chikan fuentekuna contenidota qusun chayta ruwanapaq.


Ñawpaqta, hukSwift Protocolo llamk'achisun huk contrato qunapaq, mayqinchus huk struct utaq clase hunt'asqa kananta suyan.


 protocol ContentManager { var content: [Content] { get } }


Chaymanta, iskay protocolo implementadorkunata qhawarisunchik. Kaypin ñawpaq kaq:


 class TargetAppAContentManager : ContentManager { var content: [Content] { return [ Content(name: TargetAppAContentIdentifier.videoOneName.rawValue, image: TargetAppAImagePreviewIdentifier.videoOnePreview.rawValue, video: TargetAppAImageVideoIdentifier.videoOneVideo.rawValue), Content(name: TargetAppAContentIdentifier.videoTwoName.rawValue, image: TargetAppAImagePreviewIdentifier.videoTwoPreview.rawValue, video: TargetAppAImageVideoIdentifier.videoTwoVideo.rawValue), Content(name: TargetAppAContentIdentifier.videoThreeName.rawValue, image: TargetAppAImagePreviewIdentifier.videoThreePreview.rawValue, video: TargetAppAImageVideoIdentifier.videoThreeVideo.rawValue), ] return contentToShow } }


TargetAppAContentManager nisqaqa ñawpaq ruwana metapaq llamk'achisqa chiqap ruwaymi. Huk matriz Content kaqmanta qun , mayqinchus recurso sutikuna tarisqa app paquete kaqpi metapaq riman.


 class TargetAppBContentManager : ContentManager { var content: [Content] { return [ Content(name: TargetAppBContentIdentifier.videoOneName.rawValue, image: TargetAppBImagePreviewIdentifier.videoOnePreview.rawValue, video: TargetAppBImageVideoIdentifier.videoOneVideo.rawValue), Content(name: TargetAppBContentIdentifier.videoTwoName.rawValue, image: TargetAppBImagePreviewIdentifier.videoTwoPreview.rawValue, video: TargetAppBImageVideoIdentifier.videoTwoVideo.rawValue), Content(name: TargetAppBContentIdentifier.videoThreeName.rawValue, image: TargetAppBImagePreviewIdentifier.videoThreePreview.rawValue, video: TargetAppBImageVideoIdentifier.videoThreeVideo.rawValue), ] } }


Qatiqninqa TargetAppBContentManager , iskay kaq ruwana metapaq llamk'achisqa concreto ruway. Ñawpaq ruwayman ancha rikch'akun, mana App B kaqmanta riqsichiqkuna hukniray kanku.


Iskaynintin ruwanakuna ruwasqa kaptin, kunan mana chiqanmanta chayta qhawayta atikunki codigoykipi, imakunap laya kayninta ContentManager kaqman churaspa. Uraypi ViewModel nisqa rikch'anachiyta qhaway:


 @Observable class VideoListViewModel { var contentManager: ContentManager init(contentManager: ContentManager) { self.contentManager = contentManager } }


ViewModel huk laya ContentManager kaqmanta suyan qallarichiqnin kaqnintakama pasananta. ViewModel mayqin laya ContentManager kaqwanpas pasayta atikun chaymanta suyasqa hina llamk'ayta qatin. Kayqa niyta munantaq ViewModel kaqmanta llamk'achiy atikunman iskaynin ruwana metakunantinpi.


Qhipa ruwayqa allin ContentManager yapasqa kaqta qhawaymi Compilación Sources faseman. Kayhina kaqpi, App A TargetAppAContentMananger kaqmanta pukyuta huknin hina pasasqa, chaymanta App B TargetAppBContentManager kaqmanta pasasqa.


Yanapakuy Contenido kamachiqta Huñuy Pukyukuna Ruway Fase kaqman

App Bundle Recursos nisqakunata yapay

Qhipa ruwana saqisqa sapa ruwana Bundle kaqpi yanapakuykunayuq kasqanmanta qhawaymi, chaykuna ruwana riqsichiqkunawan tupan. Facil ñanqa sapa app meta kaqmanta Copy Bundle Resources ruway fase kaqmanta qhaway chaymanta recursokuna contenido kamachiqwan riqsichisqa kaqta qhaway. Mana hina kaqtinqa, chaymanta Xcode proyectoykimanta aysay copia recursokuna faseman.


Kayqa huk pisi pachata chaymanta qhawayta hapin pruebapaq, imaynachus mana huk huñuna-pacha pantayta chaskinkichu sichus huk yanapakuymanta rimasqa mana huñupi kanchu. Ruway pachapiqa, ¡huk llallinakuytam tarinki!


Huk allin ñan qhawayta kikillanmanta ruwanapaq huk unidad prueba qillqay llapa recursokuna ContentManager kaqwan riqsichisqa kachkanku paquete kaqpi waqaychasqa kasqankuta takyachinapaq. Sichus prueba mana atikunchu purichiypi, chaymanta yachanki huk chinkasqa yanapakuy kaqta paquete kaqpi.

¿Maymantaq Qatiqnin Rinapaq?

Sichus kaykama chayarqanki, allin yuyayniyuq kanayki tiyan imayna appniyki wak Apple Plataformas kaqman apamunaykipaq.


Kay qillqasqata tukunaypaq, iskay kimsa yuyaychaykunata, yanapakuykunata ima saqisqaykichik, chaykunatam yuyaychayki:


  1. Sichus Apple Vision yanapakuyta huk kachkaq ruwanaman yapachkanki, ñawpaqta, aswan achka codigoykita UIKit kaqmanta SwiftUI kaqman atikuq hina astay. Huk kachkaq app Vision Pro kaqpi llamk'achkanpa utqaylla kayninta rikuspa, SwiftUI kaqman astasqa kaptin, allinmi chaypi hapipakuyta atiy.


  2. Ñawiriy Applepa pusayninwan kunan kaq ruwanakuna visionOS kaqman apamuymanta . Allin yuyaychaykunata chaymanta yuyaychaykunata qun imayna ruwanapaq chaymanta imayna visionOS ruwanakuna aprovechayta.


  3. Sichus qam kikiyki huk musuq multiplataforma app qallariyta yuyachkanki, huk Multiplataforma tabla Xcode kaqpi tiyan, chaymanta huk yupay app plantillas llamk'achinapaq qun. Hinallataqmi kan huk video WWDC 2022 nisqamanta chaymanta.


  4. Sichus ejemplokunata qhawayta munanki ruwanakuna achka plataformakunapura llamk'achkanku, yuyaychayki qhawayta sapalla ruwanakunayta Christmas Chill chaymanta Ocean Chill . Kaykunaqa iskay ruwanakuna kanku llamk'achkanku tukuy tvOS kaqpi chaymanta Vision Pro kaqpi, huk sapalla codebase kaqmanta ruwasqa. (tvOS yanapakuy Ocean Chillpaq chayamunqaña!)