Turinys:

Nuotraukų bendrinimo „IOS“programa: 6 veiksmai
Nuotraukų bendrinimo „IOS“programa: 6 veiksmai

Video: Nuotraukų bendrinimo „IOS“programa: 6 veiksmai

Video: Nuotraukų bendrinimo „IOS“programa: 6 veiksmai
Video: Telefono seklys REPTILICUS (Android, IOS) 2024, Liepa
Anonim

Šioje instrukcijoje mes sukursime „iOS“programą su „Swift“, kuri leis jums dalytis nuotraukomis su visais netoliese esančiais asmenimis, nereikalaujant suporuoti įrenginio.

Mes naudosime „Chirp Connect“duomenims siųsti naudojant garsą, o „Firebase“- vaizdams saugoti debesyje.

Siunčiant duomenis su garsu sukuriama unikali patirtis, kai duomenys gali būti transliuojami visiems, esantiems klausos diapazone.

1 veiksmas: diegimo reikalavimai

Xcode

Įdiekite iš „App Store“.

Kakavos pupelės

sudo gem įdiegti cocoapods

„Chirp Connect“„iOS“SDK

Užsiregistruokite adresu admin.chirp.io

2 žingsnis: sąrankos projektas

1. Sukurkite Xcode projektą.

2. Prisijunkite prie „Firebase“ir sukurkite naują projektą.

Įgalinkite „Firestore“spustelėdami skyrių „Duomenų bazė“ir pasirinkę „Cloud Firestore“. Spustelėkite Funkcijos, kad taip pat įgalintumėte debesies funkcijas.

3. Projekto apžvalgos puslapyje paleiskite „Nustatykite„ iOS “programą

Jums reikės paketo identifikatoriaus, esančio skirtuke „Bendra“, esančiame „Xcode“projekto nustatymuose. Sukūrus „Podfile“, prieš paleidžiant pod diegimą turėsite pridėti šias priklausomybes.

# Ankštys projektui

pod 'Firebase/Core' pod 'Firebase/Firestore' pod 'Firebase/Storage'

4. Atsisiųskite naujausią „Chirp Connect iOS“SDK iš admin.chirp.io/downloads

5. Norėdami integruoti „Chirp Connect“į „Xcode“, atlikite kūrėjų.chirp.io veiksmus.

Eikite į Pradžia / „iOS“. Tada slinkite žemyn ir vykdykite „Swift“nustatymo instrukcijas. Tai apims sistemos importavimą ir susiejimo antraštės sukūrimą.

Dabar sąranka baigta, galime pradėti rašyti kodą! Patartina patikrinti kiekvieno projekto sąrankos etapą.

3 žingsnis: parašykite IOS kodą

1. Importuokite „Firebase“į savo „ViewController“ir išplėskite „NSData“, įtraukdami „hexString“plėtinį, kad galėtume konvertuoti „Chirp Connect“naudingąsias apkrovas į šešioliktainę eilutę. („Chirp Connect“bus prieinama visame pasaulyje dėl sujungimo antraštės).

importuoti UIKit

importuoti „Firebase“

plėtinio duomenys {

var hexString: String {return map {String (formatas: "%02x", UInt8 ($ 0))}.joined ()}}

2. Pridėkite „ImagePicker“atstovus prie „ViewController“ir paskelbkite „ChirpConnect“kintamąjį, vadinamą „connect“.

klasės „ViewController“: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var connect: „ChirpConnect“? nepaisyti funkcinio rodinioDidLoad () {super.viewDidLoad ()…

3. Po super.viewDidLoad inicijuokite „Chirp Connect“ir nustatykite gautą atgalinį skambutį. Gavę atgalinį skambutį, mes gausime vaizdą iš „Firebase“, naudodami gautą naudingąją apkrovą, ir atnaujinsime „ImageView“. APP_KEY ir APP_SECRET galite gauti iš admin.chirp.io.

connect = ChirpConnect (appKey: APP_KEY, andSecret: APP_SECRET) if let connect = connect {connect.getLicenceString {(licence: String ?, error: Error?) in if error == nil {if let license = license {connect.setLicenceString (licencija) connect.start () connect.receivedBlock = {(duomenys: duomenys?) -> () in if let data = data {print (String (formatas: "Gauti duomenys: %@", data.hexString)) tegul failas = Storage.storage (). Reference (). Child (data.hexString) file.getData (maxSize: 1 * 1024 * 2048) {imageData, error in if let error = error {print ("Error: %@", error.localizedDescription)} else {self.imageView.image = UIImage (duomenys: imageData!)}}} else {print ("Nepavyko iššifruoti"); }}}}

4. Dabar pridėkite vaizdo duomenų siuntimo kodą, kai jis bus pasirinktas vartotojo sąsajoje.

func imagePickerController (_ rinkiklis: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any])

{tegul imageData = info [UIImagePickerControllerOriginalImage] kaip? UIImage tegul duomenys: Data = UIImageJPEGRepresentation (imageData !, 0.1)! self.imageView.image = imageData tegul metadata = StorageMetadata () metadata.contentType = "image/jpeg", jei leidžiama prisijungti = prisijungti {let key: Data = connect.randomPayload (withLength: 8) Firestore.firestore (). collection (" addDocument (duomenys: ["key": key.hexString, "timestamp": FieldValue.serverTimestamp ()]) {error in if let error = error {print (error.localizedDescription)}} Storage.storage ().reference (). vaikas (key.hexString).putData (duomenys, metaduomenys: metaduomenys) {(metaduomenys, klaida), jei leiskite klaida = klaida {print (error.localizedDescription)}} kitas {connect.send (key)}} } self.dismiss (animacinis: tiesa, užbaigimas: nulis)}

Pastaba: Norėdami suteikti leidimus naudoti fotoaparatą, nuotraukų biblioteką ir mikrofoną, prie savo „Info.plist“turėsite pridėti privatumo - nuotraukų bibliotekos naudojimo aprašymo, privatumo - nuotraukų bibliotekos naudojimo aprašymo ir privatumo - mikrofono naudojimo aprašo teiginius.

4 žingsnis: sukurkite vartotojo sąsają

Sukurkite vartotojo sąsają
Sukurkite vartotojo sąsają

Dabar eikite į „Main.storyboard“failą, kad sukurtumėte vartotojo sąsają.

1. Nuvilkite „ImageView“ir du mygtukus į siužetinę liniją iš „Object Library“skydelio apatiniame dešiniajame kampe.

2. Prie kiekvieno mygtuko pridėkite maždaug 75 pikselių aukščio apribojimą, pasirinkdami komponentą ir spustelėdami mygtuką Pridėti naujų apribojimų (tą, kuris atrodo kaip „Žvaigždžių karų“kovotojas), tada įveskite aukštį ir paspauskite „Enter“.

3. Pasirinkite visus tris komponentus ir įdėkite juos į krūvos rodinį spustelėdami mygtuką Įterpti į krūvą.

4. Dabar atidarykite asistento redaktorių ir paspauskite CTRL ir vilkite iš kiekvieno komponento į „ViewController“kodą, kad sukurtumėte kiekvieno komponento „Outlets“.

@IBOutlet var imageView: UIImageView!

@IBOutlet var openLibraryButton: UIButton! @IBOutlet var openCameraButton: UIButton!

5. Dabar paspauskite CTRL ir vilkite iš abiejų mygtukų, kad sukurtumėte veiksmą, skirtą atidaryti fotoaparato/bibliotekos vartotojo sąsają.

6. Atidarydami biblioteką, pridėkite šį kodą

@IBAction func openLibrary (_ siuntėjas: bet koks) {

tegul imagePicker = UIImagePickerController () imagePicker.delegate = self; imagePicker.sourceType =.photoLibrary self.present (imagePicker, animuotas: tiesa, užbaigimas: nulis)}

7. Atidarydami fotoaparatą

@IBAction func openCamera (_ siuntėjas: bet koks) {

tegul imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType =.camera; self.present („imagePicker“, animacinis: tiesa, užbaigimas: nulis)}

5 veiksmas: parašykite debesies funkciją

Kadangi nuotraukų nereikia amžinai saugoti debesyje, galime parašyti debesies funkciją, kad galėtume atlikti valymą. Tai gali suaktyvinti kaip HTTP funkciją kas valandą „cron“paslauga, pvz., Cron-job.org.

Pirmiausia turime įdiegti „Firebase“įrankius

npm įdiegti -g firebase -tools

Tada paleiskite iš projekto šakninio katalogo

firebase iniciatyva

Pasirinkite funkcijas iš komandinės eilutės, kad inicijuotumėte debesies funkcijas. Taip pat galite įjungti „firestore“, jei taip pat norite konfigūruoti „Firestore“.

Tada atidarykite funkcijas/index.js ir pridėkite šį kodą. Nepamirškite pakeisti

į „Firebase“projekto ID.

const funkcijos = reikalauti ('ugnies bazės funkcijos');

const admin = reikalauti ('firebase-admin'); admin.initializeApp () export.cleanup = features.https.onRequest ((prašymas, atsakymas) => {admin.firestore ().collection ('uploads').where ('timestamp', '{snapshot.forEach (doc =) > {admin.storage ().bucket ('gs: //.appspot.com').file (doc.data ().key).delete () doc.ref.delete ()}) return response.status (200).siųsti („Gerai“)}). Sugauti (klaida => atsakymas. Būsena (500). Atsiųsti (klysti))});

Diegti debesies funkcijas yra taip paprasta, kaip paleisti šią komandą.

dislokuoti ugnies bazę

Tada svetainėje cron-job.org sukurkite užduotį, kuri kas valandą suaktyvintų šį parametrą. Galutinis taškas bus kažkas panašaus

us-central1-project_id.cloudfunctions.net/cleanup

6 veiksmas: paleiskite programą

Paleiskite programą simuliatoriuje arba „iOS“įrenginyje ir pradėkite bendrinti nuotraukas!

Rekomenduojamas: