Talaan ng mga Nilalaman:
- Hakbang 1: I-install ang Mga Kinakailangan
- Hakbang 2: I-setup ang Proyekto
- Hakbang 3: Sumulat ng IOS Code
- Hakbang 4: Lumikha ng isang User Interface
- Hakbang 5: Sumulat ng isang Cloud Function
- Hakbang 6: Patakbuhin ang App
Video: Proximity Photo Sharing IOS App: 6 na Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Sa pagtuturo na ito ay lilikha kami ng isang iOS app na may Swift na nagbibigay-daan sa iyo upang ibahagi ang mga larawan sa sinumang malapit, nang walang kinakailangang pagpapares ng aparato.
Gagamitin namin ang Chirp Connect upang magpadala ng data gamit ang tunog, at Firebase upang maiimbak ang mga imahe sa cloud.
Ang pagpapadala ng data na may tunog ay lumilikha ng isang natatanging karanasan kung saan maaaring mai-broadcast ang data sa sinumang nasa saklaw ng pandinig.
Hakbang 1: I-install ang Mga Kinakailangan
Xcode
I-install mula sa App Store.
CocoaPods
sudo gem install cocoapods
Chirp Connect iOS SDK
Mag-sign up sa admin.chirp.io
Hakbang 2: I-setup ang Proyekto
1. Lumikha ng isang proyekto sa Xcode.
2. Mag-sign in sa Firebase at lumikha ng isang bagong proyekto.
Paganahin ang Firestore sa pamamagitan ng pag-click sa seksyong Database at pagpili sa Cloud Firestore. Mag-click sa Mga Pag-andar upang paganahin din ang Mga Pag-andar ng Cloud.
3. Patakbuhin ang I-set up ang iyong iOS app sa pahina ng Pangkalahatang-ideya ng Project
Kakailanganin mo ang Bundle Identifier mula sa Pangkalahatang Tab sa iyong Mga Setting ng Proyekto ng Xcode. Kapag nilikha ang Podfile kakailanganin mong idagdag ang mga sumusunod na dependency, bago patakbuhin ang pag-install ng pod.
# Pods para sa proyekto
pod 'Firebase / Core' pod 'Firebase / Firestore' pod 'Firebase / Storage'
4. I-download ang pinakabagong Chirp Connect iOS SDK mula sa admin.chirp.io/downloads
5. Sundin ang mga hakbang sa mga developer.chirp.io upang isama ang Chirp Connect sa Xcode.
Pumunta sa Pagsisimula / iOS. Pagkatapos mag-scroll pababa at sundin ang mga tagubilin sa pag-set up ng Swift. Magsasangkot ito ng pag-import ng balangkas at paglikha ng isang bridging header.
Ngayon ang pag-setup ay kumpleto na, maaari nating simulan ang pagsulat ng ilang code! Magandang ideya na suriin ang pagbuo ng iyong proyekto sa bawat yugto sa pag-setup.
Hakbang 3: Sumulat ng IOS Code
1. I-import ang Firebase sa iyong ViewController at palawakin ang NSData upang isama ang isang hexString extension, upang mai-convert namin ang mga Chirp Connect payload sa isang hexadecimal string. (Ang Chirp Connect ay magagamit sa buong mundo salamat sa bridging header).
i-import ang UIKit
i-import ang Firebase
extension ng Data {
var hexString: String {return map {String (format: "% 02x", UInt8 ($ 0))}.sama ()}}
2. Magdagdag ng mga delegado ng ImagePicker sa iyong ViewController, at ideklara ang isang variable ng ChirpConnect na tinatawag na connect.
klase ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var connect: ChirpConnect? i-override ang func viewDidLoad () {super.viewDidLoad ()…
3. Pagkatapos ng super.viewDidLoad, ipasimulan ang Chirp Connect, at i-set up ang natanggap na callback. Sa natanggap na callback ay kukunin namin ang imahe mula sa Firebase gamit ang natanggap na kargamento at i-update ang ImageView. Maaari mong makuha ang iyong APP_KEY at APP_SECRET mula sa admin.chirp.io.
ikonekta = ChirpConnect (appKey: APP_KEY, atSecret: APP_SECRET) kung hayaang kumonekta = kumonekta {connect.getLicenceString {(lisensya: String ?, error: Error?) sa kung error == nil {kung hayaan ang lisensya = lisensya {connect.setLicenceString (lisensya) connect.start () connect.receivedBlock = {(data: Data?) -> () sa kung hayaan ang data = data {print (String (format: "Natanggap na data:% @", data.hexString)) hayaan ang file = Storage.storage (). Sanggunian (). Bata (data.hexString) file.getData (maxSize: 1 * 1024 * 2048) {imageData, error kung hayaan ang error = error {print ("Error:% @", error.localizedDescription)} iba pa {self.imageView.image = UIImage (data: imageData!)}}} iba pa {print ("Nabigo ang pag-decode"); }}}}
4. Ngayon idagdag ang code upang maipadala ang data ng imahe sa sandaling napili ito sa UI.
func imagePickerController (_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]
{let imageData = info [UIImagePickerControllerOriginalImage] bilang? Hayaan ang UIImage data: Data = UIImageJPEGRepresentation (imageData !, 0.1)! self.imageView.image = imageData let metadata = StorageMetadata () metadata.contentType = "image / jpeg" kung hayaang kumonekta = kumonekta {let key: Data = connect.randomPayload (withLength: 8) Firestore.firestore (). koleksyon (" uploads "). addDocument (data: [" key ": key.hexString," timestamp ": FieldValue.serverTimestamp ()]) {error in if let error = error {print (error.localizedDescription)}} Storage.storage ().referensi (). bata (key.hexString).putData (data, metadata: metadata) {(metadata, error) kung hayaan ang error = error {print (error.localizedDescription)} iba pa {connect.send (key)}} } self.dismiss (animated: totoo, pagkumpleto: nil)}
Tandaan: Kakailanganin mong magdagdag ng isang Pagkapribado - Paglalarawan ng Paggamit ng Photo Library, Pagkapribado - Paglalarawan ng Paggamit ng Photo Library at Pagkapribado - Mga pahayag sa Paglalarawan ng Paggamit ng Mikropono sa iyong Info.plist upang magbigay ng mga pahintulot na magamit ang Camera, Photo Library at Mikropono.
Hakbang 4: Lumikha ng isang User Interface
Pumunta ngayon sa file ng Main.storyboard upang lumikha ng isang UI.
1. Pag-drag sa isang ImageView at dalawang mga Pindutan sa Storyboard mula sa panel ng Object Library sa kanang sulok sa ibaba.
2. Para sa bawat pindutan magdagdag ng isang hadlang sa taas na tungkol sa 75px sa pamamagitan ng pagpili ng sangkap at pag-click sa pindutan ng Magdagdag ng Mga Bagong Paghihigpit (ang isa na mukhang isang Star Wars tie fighter), at pagkatapos ay ipasok ang taas at pindutin ang Enter.
3. Piliin ang lahat ng tatlong mga bahagi at ilagay ang mga ito sa isang view ng stack sa pamamagitan ng pag-click sa pindutan na I-embed In Stack.
4. Ngayon buksan ang Assistant Editor, at pindutin ang CTRL at i-drag mula sa bawat bahagi sa ViewController code, upang lumikha ng Mga outlet para sa bawat bahagi.
@IBOutlet var imageView: UIImageView!
@IBOutlet var openLibrary Button: UIButton! @IBOutlet var openCamera Button: UIButton!
5. Ngayon CTRL at i-drag mula sa parehong mga pindutan upang lumikha ng isang Aksyon upang buksan ang camera / library UI's.
6. Sa aksyon na Buksan ang Library, idagdag ang sumusunod na code
@IBAction func openLibrary (_ nagpadala: Anumang) {
hayaan ang imagePicker = UIImagePickerController () imagePicker.delegate = sarili; imagePicker.sourceType =.photoLibrary self.present (imagePicker, animated: true, pagkumpleto: nil)}
7. Sa aksyon na Buksan ang Camera
@IBAction func openCamera (_ nagpadala: Anumang) {
hayaan ang imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType =.camera; self.present (imagePicker, animated: totoo, pagkumpleto: nil)}
Hakbang 5: Sumulat ng isang Cloud Function
Dahil ang mga larawan ay hindi kailangang maiimbak sa ulap magpakailanman, maaari kaming magsulat ng isang Cloud Function upang maisagawa ang paglilinis. Maaari itong ma-trigger bilang isang paggana ng HTTP bawat oras sa pamamagitan ng isang serbisyo ng cron tulad ng cron-job.org.
Una sa lahat kailangan naming mag-install ng mga firebase-tool
mag-install ng -g mga firebase-tool
Pagkatapos mula sa pagpapatakbo ng root direktoryo ng proyekto
firebase init
Piliin ang mga pag-andar mula sa linya ng utos upang ipasimuno ang mga pag-andar ng ulap. Maaari mo ring paganahin ang firestore kung nais mo ring i-configure ang Firestore.
Pagkatapos buksan ang mga function / index.js at idagdag ang sumusunod na code. Tandaan na magbago
sa iyong Firebase project id.
const function = nangangailangan ('firebase-functions');
const admin = nangangailangan ('firebase-admin'); admin.initializeApp () exports.cleanup = functions.https.onRequest ((hiling, tugon) => {admin.firestore ().collection ('uploads'). Kung saan ('timestamp', '{snapshot.forEach (doc = > {admin.storage ().bucket ('gs: //.appspot.com').file (doc.data ().key).delete () doc.ref.delete ()}) bumalik tugon.status (200). Ipadala ('OK')}).catch (err => response.status (500). Send (err))});
Ang pag-deploy ng mga pag-andar ng cloud ay kasing simple ng pagpapatakbo ng utos na ito.
pag-deploy ng firebase
Pagkatapos sa cron-job.org lumikha ng isang trabaho upang ma-trigger ang endpoint na ito bawat oras. Ang endpoint ay magiging isang bagay tulad ng
us-central1-project_id.cloudfunctions.net/cleanup
Hakbang 6: Patakbuhin ang App
Patakbuhin ang app sa isang simulator o iOS aparato, at simulang magbahagi ng mga larawan!
Inirerekumendang:
Raspberry Pi - TMD26721 Infrared Digital Proximity Detector Java Tutorial: 4 Mga Hakbang
Raspberry Pi - TMD26721 Infrared Digital Proximity Detector Java Tutorial: Ang TMD26721 ay isang infrared digital proximity detector na nagbibigay ng isang kumpletong sistema ng detection ng kalapitan at digital interface na lohika sa isang solong 8-pin na mount mount module. Kasama sa detection ng kalapitan ang pinabuting signal-to-noise at kawastuhan Isang pro
AmbiBox IOS Remote Control App: 5 Mga Hakbang
AmbiBox IOS Remote Control App: Gamit ang iOS app na ito maaari mong makontrol ang iyong AmbiBox mula sa iyong iPhone o iPad. Pag-uusapan ko ang tungkol sa app at kung paano ito nakikipag-usap sa server ng AmbiBox, kung nais mong malaman kung paano i-install ang AmbiBox at ang mga led strip, maraming mga tutorial sa
Bluetooth LED Drawing Board at IOS App: 9 Mga Hakbang (na may Mga Larawan)
Bluetooth LED Drawing Board at IOS App: Sa tutorial na ito, makakalikha ka ng isang Bluetooth LED board na maaaring gumuhit ng mga larawan mula sa iPhone app na nilikha namin. Sa app na ito, ang mga gumagamit ay maaaring lumikha ng isang Connect 4 na laro na ipapakita din sa gameboard na ito. Ito ay magiging isang
Android / iOS App upang ma-access ang Iyong OpenWrt Router mula sa malayo: 11 Hakbang
Android / iOS App upang ma-access ang Iyong OpenWrt Router mula sa malayo: Bumili ako kamakailan ng isang bagong router (Xiaomi Mi Router 3G). At syempre, ang bago, kahanga-hangang piraso ng hardware na ito ang nagbigay inspirasyon sa akin upang magsimulang magtrabaho sa proyektong ito;)
Simpleng IOS App para sa BLE Modules: 4 na Hakbang
Simpleng IOS App para sa Mga Module ng BLE: Ang Instructable na ito ay naglalakad sa kung paano ka makakalikha ng isang iOS app na may napaka pangunahing pag-andar. Ang Instructable na ito ay hindi dadaan sa buong proseso ng paggawa ng isang iOS BLE app. Magbibigay lamang ito ng isang mataas na antas ng pangkalahatang ideya ng ilang mahahalagang elemento kasama