Sadržaj:

IOS aplikacija za dijeljenje fotografija u blizini: 6 koraka
IOS aplikacija za dijeljenje fotografija u blizini: 6 koraka

Video: IOS aplikacija za dijeljenje fotografija u blizini: 6 koraka

Video: IOS aplikacija za dijeljenje fotografija u blizini: 6 koraka
Video: How to Use Microsoft Teams for iPhone 2024, Jun
Anonim

U ovom uputstvu stvorit ćemo iOS aplikaciju sa Swiftom koja vam omogućuje da dijelite fotografije sa svima u blizini, bez potrebe za uparivanjem uređaja.

Koristit ćemo Chirp Connect za slanje podataka putem zvuka, a Firebase za spremanje slika u oblak.

Slanje podataka sa zvukom stvara jedinstveno iskustvo u kojem se podaci mogu emitirati bilo kome u dometu sluha.

Korak 1: Instalirajte zahtjeve

Xcode

Instalirajte iz App Store -a.

CocoaPods

sudo dragulj instalirati cocoapods

Chirp Connect iOS SDK

Prijavite se na admin.chirp.io

Korak 2: Postavljanje projekta

1. Kreirajte Xcode projekt.

2. Prijavite se na Firebase i kreirajte novi projekt.

Omogućite Firestore klikom na odjeljak Database i odabirom Cloud Firestore. Kliknite na Funkcije da biste omogućili i Cloud funkcije.

3. Pokrenite prozor Postavljanje aplikacije za iOS na stranici Pregled projekta

Trebat će vam Bundle Identifier s kartice General u vašim postavkama projekta Xcode. Nakon što se Podfile kreira, morat ćete dodati sljedeće ovisnosti, prije izvođenja pod install.

# Podovi za projekat

pod 'Firebase/Core' pod 'Firebase/Firestore' pod 'Firebase/Pohrana'

4. Preuzmite najnoviji iOS SDK za Chirp Connect sa stranice admin.chirp.io/downloads

5. Slijedite korake na developers.chirp.io za integraciju Chirp Connect u Xcode.

Idite na Prvi koraci / iOS. Zatim se pomaknite prema dolje i slijedite upute za postavljanje Swifta. To će uključivati uvoz okvira i stvaranje premošćujućeg zaglavlja.

Sada je postavljanje završeno, možemo početi pisati neki kod! Bilo bi dobro provjeriti verzije vašeg projekta u svakoj fazi postavljanja.

Korak 3: Napišite IOS kôd

1. Uvezite Firebase u svoj ViewController i proširite NSData tako da uključi proširenje hexString, tako da možemo pretvoriti korisni teret Chirp Connect u heksadecimalni niz. (Chirp Connect će biti dostupan globalno zahvaljujući zaglavlju za premošćivanje).

uvoz UIKit

uvoz Firebase

proširenje Podaci {

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

2. Dodajte ImagePicker delegate u svoj ViewController i deklarirajte ChirpConnect varijablu koja se zove connect.

klasa ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var connect: ChirpConnect? nadjačati funkc viewDidLoad () {super.viewDidLoad ()…

3. Nakon super.viewDidLoad, inicijalizirajte Chirp Connect i postavite primljeni povratni poziv. U primljenom povratnom pozivu dohvatit ćemo sliku iz Firebasea pomoću primljenog tereta i ažurirati ImageView. APP_KEY i APP_SECRET možete preuzeti sa admin.chirp.io.

connect = ChirpConnect (appKey: APP_KEY, andSecret: APP_SECRET) ako je dozvoljeno connect = connect {connect.getLicenceString {(licenca: String ?, greška: Error?) u ako je greška == nil {ako je dozvola = licenca {connect.setLicenceString (licence) connect.start () connect.receivedBlock = {(data: Data?) -> () in if let data = data {print (String (format: "Primljeni podaci: %@", data.hexString)) neka datoteka = Storage.storage (). Reference (). Dijete (data.hexString) file.getData (maxSize: 1 * 1024 * 2048) {imageData, greška u slučaju da greška = greška {print ("Greška: %@", greška.localizedDescription)} else {self.imageView.image = UIImage (podaci: imageData!)}}} else {print ("Dekodiranje nije uspjelo"); }}}}

4. Sada dodajte kôd za slanje slikovnih podataka nakon što su odabrani u korisničkom sučelju.

func imagePickerController (_ birač: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Bilo koji])

{neka imageData = info [UIImagePickerControllerOriginalImage] kao? UIImage let data: Data = UIImageJPEGRepresentation (imageData !, 0.1)! self.imageView.image = imageData let metadata = StorageMetadata () metadata.contentType = "image/jpeg" if let connect = connect {let key: Data = connect.randomPayload (withLength: 8) Firestore.firestore (). collection (" uploads "). addDocument (podaci: [" key ": key.hexString," timestamp ": FieldValue.serverTimestamp ()]) {error in if let error = greška {print (error.localizedDescription)}} Storage.storage ().reference (). dijete (key.hexString).putData (podaci, metapodaci: metapodaci) {(metapodaci, greška) ako je greška = greška {ispis (error.localizedDescription)} else {connect.send (key)}} } self.dismiss (animirano: istina, završetak: ništa)}

Napomena: Morat ćete dodati privatnost - opis upotrebe biblioteke fotografija, privatnost - opis upotrebe biblioteke fotografija i privatnost - izjave o korištenju mikrofona na vašem popisu Info.plist za dodjelu dozvola za korištenje kamere, biblioteke fotografija i mikrofona.

Korak 4: Kreirajte korisničko sučelje

Kreirajte korisničko sučelje
Kreirajte korisničko sučelje

Sada idite na datoteku Main.storyboard da biste kreirali korisničko sučelje.

1. Prevucite ImageView i dva dugmeta do Storyboard -a sa panela Object Library u donjem desnom uglu.

2. Za svako dugme dodajte ograničenje visine od oko 75 piksela odabirom komponente i klikom na dugme Dodaj nova ograničenja (ono koje izgleda kao borac za kravate Star Wars), a zatim unesite visinu i pritisnite Enter.

3. Odaberite sve tri komponente i stavite ih u prikaz snopa klikom na dugme Embed In Stack.

4. Sada otvorite pomoćni uređivač, pritisnite CTRL i povucite sa svake komponente do koda ViewController da biste stvorili utičnice za svaku komponentu.

@IBOutlet var imageView: UIImageView!

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

5. Sada pritisnite CTRL i povucite sa oba dugmeta da biste kreirali radnju za otvaranje korisničkog interfejsa kamere/biblioteke.

6. U akciji Otvorena biblioteka dodajte sljedeći kôd

@IBAction func openLibrary (_ pošiljalac: Bilo koji) {

neka imagePicker = UIImagePickerController () imagePicker.delegate = self; imagePicker.sourceType =.photoLibrary self.present (imagePicker, animirano: istina, završetak: ništa)}

7. U radnji Otvori kameru

@IBAction func openCamera (_ pošiljalac: Bilo koji) {

neka imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType =.camera; self.present (imagePicker, animirano: istina, završetak: ništa)}

Korak 5: Napišite Cloud funkciju

Kako fotografije ne moraju biti zauvijek pohranjene u oblaku, možemo napisati Cloud funkciju za čišćenje. To može pokrenuti kao HTTP funkcija svakog sata od strane cron servisa poput cron-job.org.

Prije svega moramo instalirati firebase-alate

npm install -g firebase -tools

Zatim iz korijenskog direktorija projekta pokrenite

firebase init

Odaberite funkcije iz naredbenog retka za inicijalizaciju funkcija u oblaku. Također možete omogućiti firestore ako želite i konfigurirati Firestore.

Zatim otvorite functions/index.js i dodajte sljedeći kod. Ne zaboravite da se promenite

na vaš Firebase ID projekta.

const functions = require ('firebase-functions');

const admin = require ('firebase-admin'); admin.initializeApp () export.cleanup = functions.https.onRequest ((zahtjev, odgovor) => {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).send ('OK')}).catch (err => response.status (500).send (err))});

Implementacija cloud funkcija je jednostavna kao i pokretanje ove naredbe.

implementacija firebase

Zatim na cron-job.org kreirajte posao za pokretanje ove krajnje točke svaki sat. Krajnja tačka će biti nešto poput

us-central1-project_id.cloudfunctions.net/cleanup

Korak 6: Pokrenite aplikaciju

Pokrenite aplikaciju na simulatoru ili iOS uređaju i počnite dijeliti fotografije!

Preporučuje se: