Table of Contents
Miksi anturin tietoasiat kuntosovelluksissa
Nykyaikaiset iOS-laitteet sisältävät joukon sensoreita, jotka voivat havaita liikkeen, sijainnin ja jopa sykkeen. Näiden antureiden integrointi kuntoseurantasovellukseen muuttaa raakadatan mielekkäiksi mittareiksi, kuten askelmäärän, matkan, kalorien ja reittikarttojen. Naputtamalla []Core Motion[] ja []]Core Sijainti], kehittäjät voivat luoda sovelluksia, jotka tuntuvat älykkäiltä ja reagoivilta ja antavat käyttäjille tarkkaa palautetta harjoituksistaan. Lisäksi sensoridata mahdollistaa kehittyneet ominaisuudet kuten aktiivisuusluokitus (kävely, juoksu, pyöräily) ja livepalautteen käytön aikana.
Avainanturit saatavilla iOS-laitteissa
Ennen kuin sukeltaa koodiin, on tärkeää ymmärtää, mitä sensoreita on käytettävissä:
- Akkulämpömittari .
- Gyroskooppi[ .
- GPS[ .
- Magnetometri[ .
- Barometri[ .
- Heart Rate Sensors[ ... ....................................................................................................................................................................................................................................
Jokainen anturi vaatii erityisiä kehyksiä: Core Motion for Axerography, gyroskoopin ja magnetometrin; Core Location for GPS and Barometri; HealthKit for syke ja muut terveystiedot.
Kehittämisympäristön luominen
Aloita asentamalla Xcode (saatavana Mac App Storesta) ja luomalla uusi iOS-projekti. Valitse [App[]-malli ja varmista, että sinulla on Apple Developer -tili todellisten laitteiden testaamiseen. Anturitiedot vaativat usein todellisia laitteistoja; simulaattoreilla on rajoitettu sensorituki (esim. GPS-korkeus, ei todellista kiihtyvyysmelua).
Xcode-projektissasi ota käyttöön vaaditut ominaisuudet Signing & Capabilities:n mukaisesti:
- Sijaintipalvelut[ .
- HealthKit .
- Taustatilat[ . Tarkista ...
Lisää tarvittavat oikeudet ja info.plist-avaimet. Lisää esimerkiksi ja käyttäjäystävällisillä selityksillä.
Pyydän lupaa oikeaan suuntaan
Käyttäjät ovat yhä enemmän yksityisyystietoisia. Pyydä aina käyttölupia siinä vaiheessa, kun ominaisuus on todella tarpeen, ei lanseerauksessa. Käytä sijaintioikeuksia varten []CLLocationManager[:
import CoreLocation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
Liikedataa varten käytä CMMotionManager[. Huomaa, että liikedata ei vaadi käyttäjän nimenomaista lupaa (se katsotaan laitteeksi-sisäinen), mutta sinun pitäisi silti selittää, miksi tarvitset sitä tietosuojakäytännössäsi. HealthKitin tietoja varten sinulla on oltava voimassa oleva HKHealthStore ja soita . Tarjoa selkeitä, ytimekkäitä säikeitä Info.plist-muodossa rakentaaksesi luottamusta.
Toteutetaan anturitietojen keruu
Tiedonkeruu on kuntosovelluksen ydin. Alla on liike- ja sijaintikokoelma.
Kiihdytysmittari ja gyroskooppidata ydinliikeineen
Käytä CMMotionManager[] -päivityksiä. Valitse päivitysväli, joka tasapainottaa tarkkuutta ja akun kestoa. Askellaskussa on tyypillinen, mutta käyttöliittymäpäivityksille 1/10 sekuntia.
import CoreMotion
let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.1
motionManager.startAccelerometerUpdates(to: .main) { (data, error) in
guard let accelData = data else { return }
// Use accelData.acceleration.x, .y, .z
}
Gyroskooppi- ja magnetometrin osalta on olemassa samanlaiset menetelmät: ja . Jos tarvitset laitteen asentoa (kierre suhteessa painovoimaan), käytä , jossa yhdistyvät kiihtyvyysmittari, gyroskoopin ja magnetometrin tiedot.
GPS ja sijaintitiedot ydinsijainti
Aseta CLLLLcationManager[] -toiminto vastaanottaaksesi sijaintipäivitykset. Aseta haluttu tarkkuus toiminnan perusteella. Ulkoilua varten on sopiva; sisäkävelyä varten, säästää akun.
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5 // meters
locationManager.startUpdatingLocation()
Toteuta delegointimenetelmä uusien koordinaattien käsittelyyn. Käytä [-ominaisuutta suodattaaksesi huonolaatuisia lukemia. Reittikartoitusta varten säilytä koordinaatit yhdessä aikaleiman kanssa.
Sensoritietojen käsittely hyödylliseksi metriseksi
Raaka-anturin tiedot ovat meluisia. Käsittelyvaiheisiin kuuluvat tyypillisesti suodatus, kalibrointi ja laskenta.
Askellasku kiihtyvästä nopeudesta
Käytä huippuhavaitsemisalgoritmia kiihdytyksen suuruudessa. Yhteisenä lähestymistapana on laskea Euklidean normi (sqrt(x2+y2+z2)), soveltaa korkeapäästöistä suodatinta poistaa painovoimaa, sitten havaita huiput yli kynnysarvon. Tuotannossa harkita Apple-s sisäänrakennettu []CMPedometri, joka tarjoaa askelmäärät ja poljin ilman tarvetta toteuttaa havaitsemis itse.
if CMPedometer.isStepCountingAvailable() {
var pedometer = CMPedometer()
pedometer.startUpdates(from: Date()) { (data, error) in
if let steps = data?.numberOfSteps {
// update UI
}
}
}
Vastaavasti KMPedometri voi tarjota etäisyyttä, vauhtia ja lattiat ylösnousevat/laskeutuvat.
Toimintoluokitus
Käytä CMMotionActivityManager[] automaattisesti luokitella käyttäjän liiketila (kävely, juoksu, pyöräily, paikallaan). Tämä vähentää tarvetta erilliset havaitsemisalgoritmit ja tarjoaa korkean tason konteksti.
let activityManager = CMMotionActivityManager()
activityManager.startActivityUpdates(to: .main) { (activity) in
if activity?.walking == true {
// treat as walking
} else if activity?.running == true {
// treat as running
}
}
Etäisyys ja nopeus GPS:stä
Laske peräkkäisten sijaintipisteiden välinen etäisyys [etäisyys [alkaen:)[] menetelmää käyttäen CLLlocation. Kokonaisetäisyydet saadaan ominaisuuden kautta. Suodata epätodennäköiset nopeuden (esim., > 30 m/s ihmisen toiminnan osalta).
Näytetään tiedot: kaaviot ja kartat
Reittikarttoja varten käytetään MKMapView[] ja piirnetään monilinjainen yhteys nauhoitettuihin koordinaatteihin. Suorituskykymittareihin käytetään karttoja[] (suosittu avoimen lähdekoodin kirjasto) tai Apple.Swift kaavioita[] kehystä (iOS 16+). Näytä yhteenvetotilastoja, kuten keskimääräinen tahti, sykealueet ja korkeusprofiili.
import MapKit
let polyline = MKPolyline(coordinates: &coordinates, count: coordinates.count)
mapView.addOverlay(polyline)
Jos syke on kytketty HealthKitin tai Bluetoothin kautta, näytä reaaliaikainen kaavio WKInterfaceGraphic- tai SwiftUI -näkymällä.
Käsittely Taustapäivitykset
Fitness-sovellukset on usein kerättävä, kun sovellus on taustalla. Ota käyttöön [ taustatilat[ ja valitse .Paikanpäivitykset. Jatkuvaan tausta-asentoon käytetään . Merkittävän muutoksen seurantaan (vähemmän usein, paristoystävällinen), käytä .].
Liiketietojen osalta taustapäivitykset ovat rajalliset. Järjestelmä voi toimittaa liikepäivityksiä vain silloin, kun sovellus on etualalla tai pian paikannuksen jälkeen. Luotettavuuden parantamiseksi on harkittava []CLActivityType[] -järjestelmän käyttöä :n mukaisesti.
Tietojen tallennus ja terveyskeskusten integrointi
Tallenna harjoitustiedot jatkuvasti. Valinnat:
- Core Data[ .
- SQLite[ .
- UserDefaults .
- HealthKit[ . Apple.Selvitystyön kirjoittaminen HealthKitille tarjoaa ne Apple Healthin ja muiden sovellusten käyttöön.
Integroida HealthKit, ensimmäinen pyyntö lupa kirjoittaa harjoitustiedot ja lukea asiaankuuluvat näytteet (sydämen syke, etäisyys). Sitten luoda HKWorkout objekti ja tallentaa se:
let healthStore = HKHealthStore()
let workout = HKWorkout(activityType: .running, start: startDate, end: endDate, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { (success, error) in
// handle
}
Sydämen sykemittanäytteet voidaan lukea harjoituksen aikana samanaikaisesti HKAnchoredObjectQuery tai HKObserverQuery.
Optimoin akun käyttöikää ja suorituskykyä
Jatkuva sensorin käyttö tyhjentää akun. Käytä näitä strategioita:
- Adjust update intervallers .
- Käytä etäisyyssuodatinta [ ... .......................................................................................................................................................................................................................................
- Pysäytä, kun se on paikallaan[ . Käytä CMMotionActivityManager[] havaitaksesi pysäköimättömät kaudet ja pysäyttää GPS-päivitykset.
- Vähennettyjä päivityksiä[ ... ....................................................................................................................................................................................................................................
- Batch käsittely[ . ... Kerää tiedot muistiin ja kirjoita tallennukseen ajoittain (esim. 10 minuutin välein).
Testaus ja vianetsintä Anturitietojen testaus
Simulaattorilla testaaminen on rajoitettua. Aina testataan oikeilla laitteilla tarkka kiihtyvyysmittari, GPS ja syketiedot. Käytä Xcode.s [Simuloi sijainti[] ominaisuus testata vapaa-ajoreitit. Liikedatan avulla voit käyttää []Core Motion[] vianetsintätyökaluja kehittäjän valikossa. Log sensori lukemat aikaleimalla tarkistaa tarkkuutta. Myös testata taustan käyttäytymistä ottamalla .
Käyttäjäkokemus ja yksityisyyden suoja
Yksityisyys on tärkeää. Seuraa Apple.s App Store Review Guidelines[] ja ylläpitää selkeää tietosuojakäytäntöä. Älä koskaan jaa sensoritietoja ilman nimenomaista suostumusta. Käytä laitteen käsittelyä mahdollisuuksien mukaan. Analytiikka, anonymisoi ja koosta.
Käyttäjien kokemukseen tulisi sisältyä:
- Koneessa oleva näyttö, joka selittää sensorien käytön ja hyödyt.
- Reaaliaikainen palaute harjoitusten aikana (audio-keppiä, haptista palautetta).
- Kyky tarkistaa, muokata ja poistaa harjoitustietoja.
- Offline-toiminto ... tallentaa tiedot paikallisesti ja synkronoida, kun verkko on käytettävissä.
Tulevaisuuden parannukset
Harkitse lisättävää:
- Integrointi Apple Watch syke- ja harjoitusseurannan osalta.
- Koneoppimismallit (Core ML) kehittyneen toiminnan tunnistamiseen.
- Sosiaaliset ominaisuudet (johtajistot, haasteet) CloudKitin avulla.
- AR reittien päällystäminen ARKit.
Päätelmät
Kuntoilun seurantasovelluksen rakentaminen sensoritietojen integrointiin iOS:ssa on palkitseva haaste.Voit luoda Core Motion, Core Location ja HealthKit-sovelluksen, joka tarjoaa tarkkoja ja toimintakelpoisia oivalluksia samalla kun kunnioitat käyttäjien yksityisyyttä. Keskity puhtaaseen koodiin, pariston tehokkuuteen ja saumattomaan käyttökokemukseen. Aloita pieni askellaskulla ja paikannuksella, sitten laajenna sykettä ja kehittyneitä analytiikkaa. Virallisia asiakirjoja varten ota yhteyttä Core Motion[], []Lisää sijainti[] ja [HealthKit[[] -viitteitä.