INHOUDSOPGAWE:

Proximity Photo Sharing IOS App: 6 stappe
Proximity Photo Sharing IOS App: 6 stappe

Video: Proximity Photo Sharing IOS App: 6 stappe

Video: Proximity Photo Sharing IOS App: 6 stappe
Video: Chris Langan: IQ, Free Will, Psychedelics, CTMU, & God 2024, November
Anonim

In hierdie instruksies sal ons 'n iOS -app met Swift skep waarmee u foto's kan deel met enigiemand in die omgewing, sonder dat paring nodig is.

Ons sal Chirp Connect gebruik om data met klank te stuur, en Firebase om die beelde in die wolk te stoor.

Deur data met klank te stuur, skep 'n unieke ervaring waar data aan almal binne gehoorbereik uitgesaai kan word.

Stap 1: Installeer vereistes

Xcode

Installeer vanaf die App Store.

Kakao -peule

sudo gem installeer cocoapods

Chirp Connect iOS SDK

Teken in by admin.chirp.io

Stap 2: Opstelprojek

1. Skep 'n Xcode -projek.

2. Meld aan by Firebase en skep 'n nuwe projek.

Aktiveer Firestore deur in die databasisafdeling te klik en Cloud Firestore te kies. Klik op Funksies om ook Cloud Functions in te skakel.

3. Begin deur Stel u iOS -program op die projekoorsigbladsy op

U benodig die bundel -identifiseerder op die oortjie Algemeen in u Xcode -projekinstellings. Sodra die podbestand geskep is, moet u die volgende afhanklikes byvoeg voordat u pod -installasie kan uitvoer.

# Peule vir die projek

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

4. Laai die nuutste Chirp Connect iOS SDK af vanaf admin.chirp.io/downloads

5. Volg die stappe by developers.chirp.io om Chirp Connect in Xcode te integreer.

Gaan na Aan die gang / iOS. Blaai dan af en volg die instruksies vir die opstel van Swift. Dit behels die invoer van die raamwerk en die skep van 'n oorbruggingskop.

Nadat die opstelling voltooi is, kan ons 'n paar kode begin skryf! Dit is 'n goeie idee om die konstruksie van u projek in elke fase van die opstelling na te gaan.

Stap 3: Skryf IOS -kode

1. Voer Firebase in in u ViewController en brei NSData uit om 'n hexString -uitbreiding in te sluit, sodat ons Chirp Connect -laaivragte kan omskakel na 'n heksadesimale string. (Chirp Connect sal wêreldwyd beskikbaar wees danksy die oorbruggingskop).

voer UIKit in

voer Firebase in

uitbreidingsdata {

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

2. Voeg ImagePicker -afgevaardigdes by u ViewController en verklaar 'n ChirpConnect -veranderlike genaamd connect.

klas ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

var connect: ChirpConnect? ignoreer func viewDidLoad () {super.viewDidLoad () …

3. Initialiseer Chirp Connect na super.viewDidLoad en stel die ontvangde terugbel op. In die terugbel wat ons ontvang, sal ons die prent van Firebase met behulp van die ontvangde vrag ophaal en die ImageView opdateer. U kan u APP_KEY en APP_SECRET by admin.chirp.io kry.

connect = ChirpConnect (appKey: APP_KEY, andSecret: APP_SECRET) if let connect = connect {connect.getLicenceString {(license: String ?, error: Error?) in if error == nul {if let license = license {connect.setLicenceString (lisensie) connect.start () connect.receivedBlock = {(data: Data?) -> () in as laat data = data {print (String (formaat: "Ontvang data: %@", data.hexString)) laat lêer toe = Storage.storage (). Verwysing (). Kind (data.hexString) file.getData (maxSize: 1 * 1024 * 2048) {imageData, fout in as laat error = error {print ("Error: %@", error.localizedDescription)} else {self.imageView.image = UIImage (data: imageData!)}}} else {print ("Decode failed"); }}}}

4. Voeg nou die kode by om die beelddata te stuur sodra dit in die UI gekies is.

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

{laat imageData = info [UIImagePickerControllerOriginalImage] as? UIImage laat data toe: Data = UIImageJPEGRepresentation (imageData !, 0.1)! self.imageView.image = imageData laat metadata = StorageMetadata () metadata.contentType = "image/jpeg" if let connect = connect {let key: Data = connect.randomPayload (withLength: 8) Firestore.firestore (). collection (" uploads "). addDocument (data: [" key ": key.hexString," timestamp ": FieldValue.serverTimestamp ()]) {error in if let error = error {print (error.localizedDescription)}} Storage.storage ().reference (). kind (key.hexString).putData (data, metadata: metadata) {(metadata, fout) in if let error = error {print (error.localizedDescription)} anders {connect.send (sleutel)}} } self.dismiss (geanimeer: waar, voltooiing: nul)}

Opmerking: u moet 'n privaatheid - beskrywing van gebruik van fotobiblioteek, privaatheid - beskrywing van gebruik van fotobiblioteek en privaatheid - mikrofoongebruikbeskrywing by u Info.plist voeg om toestemming te verleen om die kamera, fotobiblioteek en mikrofoon te gebruik.

Stap 4: Skep 'n gebruikerskoppelvlak

Skep 'n gebruikerskoppelvlak
Skep 'n gebruikerskoppelvlak

Gaan nou na die Main.storyboard -lêer om 'n UI te skep.

1. Sleep oor 'n ImageView en twee knoppies na die storiebord vanaf die paneel Object Library in die regter onderste hoek.

2. Voeg vir elke knoppie 'n hoogtebeperking van ongeveer 75 px by deur die komponent te kies en op die knoppie Voeg nuwe beperkings te klik (die een wat lyk soos 'n Star Wars -stryker), en voer dan die hoogte in en druk op Enter.

3. Kies al drie die komponente en plaas dit in 'n stapelaansig deur op die Embed In Stack -knoppie te klik.

4. Maak nou die Assistent -redakteur oop, druk CTRL en sleep van elke komponent na die ViewController -kode om Outlets vir elke komponent te skep.

@IBOutlet var imageView: UIImageView!

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

5. CTRL nou en sleep van beide knoppies om 'n aksie te skep om die kamera/biblioteek -UI's oop te maak.

6. Voeg die volgende kode by die aksie Open Library

@IBAction func openLibrary (_ sender: Enige) {

laat imagePicker = UIImagePickerController () imagePicker.delegate = self; imagePicker.sourceType =.photoLibrary self.present (imagePicker, geanimeerde: waar, voltooiing: nul)}

7. In die oop kamera -aksie

@IBAction func openCamera (_ sender: Enige) {

laat imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType =.camera; self.present (imagePicker, geanimeerde: waar, voltooiing: nul)}

Stap 5: Skryf 'n wolkfunksie

Aangesien die foto's nie vir ewig in die wolk gestoor hoef te word nie, kan ons 'n wolkfunksie skryf om die opruiming uit te voer. Dit kan elke uur as 'n HTTP-funksie geaktiveer word deur 'n cron-diens soos cron-job.org.

In die eerste plek moet ons firebase-gereedskap installeer

npm installeer -g firebase -tools

Begin dan vanaf die wortelgids van die projek

firebase init

Kies funksies uit die opdragreël om wolkfunksies te initialiseer. U kan ook Firestore inskakel as u Firestore wil instel.

Maak dan funksies/index.js oop en voeg die volgende kode by. Onthou om te verander

na u Firebase -projek -ID.

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

const admin = require ('firebase-admin'); admin.initializeApp () exports.cleanup = functions.https.onRequest ((versoek, antwoord) => {admin.firestore ().collection ('uploads').where ('timestamp', '{snapshot.forEach (doc = > {admin.storage ().bucket ('gs: //.appspot.com').file (doc.data ().key).delete () doc.ref.delete ()}) terugvoer.status (200).send ('OK')}).catch (err => response.status (500).send (err))});

Om wolkfunksies te implementeer, is so eenvoudig soos om hierdie opdrag uit te voer.

vuurbasis ontplooi

Skep dan op cron-job.org 'n werk om hierdie eindpunt elke uur te aktiveer. Die eindpunt sal iets soos wees

us-central1-project_id.cloudfunctions.net/cleanup

Stap 6: Begin die app

Begin die app op 'n simulator of iOS -toestel, en begin foto's deel!

Aanbeveel: