Sensör Data Matters in Fitness Uygulamaları

Modern iOS cihazları, hareket algılayabilen bir dizi sensör paketler ve hatta kalp oranı.Bu sensörleri bir fitness izleme uygulaması dönüştürmeye dönüştürmek, ham donanım verileri, adım sayılabilecekleri, mesafeyi yakarak, kalorileri yaktı ve rota haritaları.0Core Motion) ve DÖRT:2Küresel bir şekilde uyumlu hale getirerek, geliştiriciler akıllı ve duyarlı olarak, kullanıcıların egzersizlerini doğru bir şekilde geri bildirimde bulunabilmelerini sağlar.

iOS Cihazlarında Anahtar Sensörler Var

Koda dalmadan önce, sensörlerin ne pahasına olduğunu anlamak önemlidir:

  • [FONT=0)Accelerometre) - adım algılama ve yönlendirme için kullanılan hız kuvvetleri.
  • [FONT=0)Gyroskop[Dönem: 1) Madde 1 – rotasyon, aktivite sınıflandırmasına ve tespit edilmeye yardımcı olur.
  • [FONTS:0)GPS - kesin bir yer, hız ve rota takip sağlar.
  • [FONT=0)Magnetometre - navigasyon özellikleri için pupass yönü, faydalı sağlar.
  • [FONT:0)Barometre - zemin sayma ve yükseklik kazanç için kullanılan yüksek değişiklikler.
  • [FONT=0)Heart Rate Sensörleri[[Dönetici: 1) - Apple Watch veya üçüncü taraf Bluetooth cihazları aracılığıyla kullanılabilir, SağlıkKit veya Core Bluetooth aracılığıyla entegre edilmiştir.

Her sensör belirli çerçeveler gerektirir: Hızölçerometre, gyroskop ve magnetometre; GPS ve barometre için Temel Konum; Kalp oranı ve diğer sağlık verileri için SağlıkKit.

Geliştirme Çevrenizi Ayarlayın

Xcode ( Mac App Store'dan erişilebilir) ve yeni bir iOS projesi oluşturmak için başlayın. [FONTD:0)App) şablonunu seçin ve gerçek cihazlarda test için Apple Developer hesabınız olmasını sağlayın. Sensör verileri genellikle gerçek donanım gerektirir; simülatörler sınırlı sensör desteğine sahiptir (örneğin, GPS yükseklik, gerçek bir hız ölçüm gürültüyü seçin.)

Xcode projesinizde, gerekli yeteneklerin altında:0)Signing & Cap tasks) altında sağlar:

  • [FONT=0)Location Services – GPS ve bölge izleme için.
  • [FONT:0)SağlıkKit[[DÜT:1) – eğer sağlık verilerini okumak / yazmak için plansanız.
  • [FONT:0)Background Modes[[Dönlemler[Dönesel Güncellemeler” ve “Sürekli, HavaPlay ve Resimde Resim”, ses geri bildirim gerekiyorsa.

Örneğin, uygun hak ve bilgi.plist anahtarlar ekleyin. Örneğin, [[0) ve [[Dönetici:0) kullanıcı dostu açıklamalar ile.

Doğru Yolu İzin Vermek

Kullanıcılar giderek daha mahremiyet bilincine sahiptir. Her zaman özellik aslında ihtiyaç duyduğu noktada izinler, başlangıçta değil.Yer izni için, kullanım )LocationManager).

import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()

Hareket verileri için, [[0)CMMotionManager[D:0)) için, hareket verilerinin kullanıcıdan açık izin gerektirmez (kullanıcı olarak kabul edilir), ancak neden gizlilik politikasında ihtiyacınız olduğunu açık bir şekilde açıklayın.SağlıkKit verileriniz için geçerli bir HKHealth mağazasına sahip olmanız ve Bilgi için kayıt yaptırmanız gerekir.

Sensör Data Collection

Veri toplama, fitness uygulamanızın temelidir. Aşağıda hareket ve konum koleksiyonunu kaplıyoruz.

Hızölçerometre ve Gyroskop Data with Core Motion

UseFLT:0)CMMotionManager) güncellemeye başlamak için. Denge ve pil hayatı dengelemek için bir güncelleme aralığı seçin. adım say, 1/50 ikinci (20 ms) tipik, ancak UI güncelleştirmeleri için 1/10 saniye yeterlidir.

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
}

gyroskop ve magnetometre için, benzer yöntemler var:ETHFLT:5) ve [[Dörtücüklere göre (kürücüye göre) cihaz tavrına ihtiyacınız varsa, ESRAT:7, bu da bir hız ölçer ve magnetometre verilerini birleştirir.

GPS ve Konum Data with Core Location

Yer güncellemelerini almak için uygun bir şekilde, kapalı yürüyüş için uygun olan, kapalı yürüyüş için, [[Döneticiler için.

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5 // meters
locationManager.startUpdatingLocation()

Yeni koordinatlar işlemek için delege yöntemi uygulayın.Ş.Ücretsiz Adaylık) düşük kaliteli okumalar filtrelemek için mülk.Yol haritalama için, mağaza koordinatları zaman zamanlayıcılar ile birlikte.

İşleme Sensör Verileri Yararlı Metriklere

Raw sensör verileri gürültülü. İşleme adımları genellikle filtreleme, kalibrasyon ve hesaplama içerir.

Adım Accelerometreden Konting

Hızlandırma büyüklüğü üzerinde bir zirve algılama algoritması kullanın. Ortak bir yaklaşım, Apple'ın yerleşik UltraT'yi hesaplamak için geçerlidir (x2+y2+z2)), kendinizi algılamak için yüksek bir geçiş filtresi uygulayın.

if CMPedometer.isStepCountingAvailable() {
 var pedometer = CMPedometer()
 pedometer.startUpdates(from: Date()) { (data, error) in
 if let steps = data?.numberOfSteps {
 // update UI
 }
 }
}

Benzer şekilde,FL:0)CMPedometre[[Dönetici: 1) mesafe, hız ve zeminler yükselebilir / genişletilebilir.

Aktivite Sınıflandırması

UseFLT:0)CMMotionActivityManager[[Dönetici: 1 ) Kullanıcının hareket durumunu otomatik olarak sınıflandırmak (oylama, koşu, bisiklet, sabit) Bu, ayrı algılama algoritmalarının ihtiyacını azaltır ve üst düzey bağlam sağlar.

let activityManager = CMMotionActivityManager()
activityManager.startActivityUpdates(to: .main) { (activity) in
 if activity?.walking == true {
 // treat as walking
 } else if activity?.running == true {
 // treat as running
 }
}

Uzak ve Hız GPS

Uzaklığı ile aynı anda, s....................................................................................................

Veri Göstermek: Grafikler ve Haritalar

Görsel geri bildirimler kullanıcılar motive eder. Yol haritaları için, kullanım için:0)MKMapView) ve poliline bağlantılanmış bir koordinatlar çizer.For performance metrics, kullanım [[ENFLT:2)Charts) veya Apple's ).Swift Charts

import MapKit

let polyline = MKPolyline(coordinates: &coordinates, count: coordinates.count)
mapView.addOverlay(polyline)

Kalp oranı için, SağlıkKit veya Bluetooth ile bağlantılı olursa, aritFLT kullanarak gerçek zamanlı bir grafik göster:0)WKInterfaceGraphic) veya SwiftUIENFLT:2)Chart görünümü).

Plan Güncellemeleri

Fitness uygulamaları genellikle uygulamanın arka planda olduğu zaman veri toplamak gerekir. EnableurFLT:0)Background Modes) ve "Konum güncellemelerini" seçmek ve sürekli arka konum için, kullanım için, [[Göneticisiz sık, batarya arkadaşça) kullanmak.

Hareket verileri için, arka plan güncelleştirmeleri sınırlıdır. Sistem sadece bir konum güncellemesinden sonra veya kısa bir süre sonra hareket güncellemelerini sağlayabilir. Güvenilirliği artırmak için, [[ENFLT:0)CLActivityType set toyuFLT:18).

Data Storage ve HealthKit Entegrasyon

Mağaza egzersiz verileri kalıcı olarak. Seçenekler:

  • [FONT:0]Core Data[[Dönetici:0)[Döneticiler ve ilişkiler için iyi.
  • [FONT:0)SQLite[DÜT:1] – hafif, doğrudan SQL kontrolü.
  • [FONT=0]KullanıcıDefaults[Dönetici:0)[Döneticiler için değil, sadece küçük ayarlar için, sensör logları için değil.
  • [FONT:0)SağlıkKit[DÜT:1] - Apple'ın sağlık verileri için merkezi havuz. SağlıkKit'e yazma çalışmaları Apple Health ve diğer uygulamalara uygun hale getirir.

SağlıkKit'ı entegre etmek için, ilk istek izni egzersiz verilerini yazmak ve ilgili örnekleri okumak (kalp oranı, mesafe). sonra bir [[Dönetici:0)HKWorkout[[[Dönem: 1) nesnesi oluşturmak ve kurtarmak:

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
}

Egzersiz sırasında kalp oranı örnekleri anlaşılabilir:0)HKAnchoredObjectQuery) veya [[Dönetici)) tarafından eş zamanlı olarak kullanılabilir.

Battery Life ve Performansı

Sürekli sensör kullanımı bataryayı boşaltır. Bu stratejileri uygulayın:

  • [[0)Adjust güncelleştirme aralığı[[[Dönetici:0)[Dönetici:0)[değiştir | kaynağı değiştir] – Sadece ihtiyaç duyduğunuzda daha düşük frekans kullanın.
  • [FONT:0) Uzak filtreleme [[DÜT:1) - GPS için, ayarlandığında makul bir değere (örneğin, 10 metre).
  • [FONT=0)Pause when stationary) – UseurFLT:2).CMMotionActivityManager), sabit dönemleri tespit etmek ve GPS güncelleştirmelerini durdurmak için.
  • [FONT:0)Demirlenen güncellemeler[Dönetici: 1) iOS 6+'da, yer güncellemelerinin ŞAMT:0) kullanılarak tasarruf için ertelenmesine izin verebilirsiniz.
  • [FONT:0)Batch işleme[[[Dönetici: 1) - hafızada veri toplamak ve periyodik olarak depolamak için yazmak (örneğin, her 10 dakika).

Test ve Debugging Sensör Data

Bir simülatörün test edilmesi, her zaman doğru bir hız için gerçek cihazlar üzerinde test edilir, GPS ve kalp hızı verileri. Xcode'surFLT:0) Konum) Uygulamalı görüntü sistemleri test etmek için ücretsiz araç rotalarını test etmek için.For move data, you can use theFLT:2.Core Motion) Cihazın geliştirici menüsünde etiketleme aletlerini kullanın. Log sensör okumaları zamanları doğrulamak için. Ayrıca test arka plan davranışını test etmek için "Back Fetch" ve basit ağ koşullarını kullanabilirsiniz.

Kullanıcı Deneyimi ve Gizlilik

Gizlilik kritiktir. Apple'ın 03.03.2012 tarihli App Store Review Kılavuzları[[Dönetici:0) Uygulama Store Review Kılavuzları[[Dönetici politikasına sahip değildir. asla açık bir gizlilik politikası olmadan sensör verilerini paylaşma.

Kullanıcı deneyimi şunları içermelidir:

  • Sensör kullanımını ve faydalarını açıklayan bir ekran.
  • Egzersizler sırasında gerçek zamanlı geri bildirimler (tadio cues, haptik geri bildirimler).
  • Değerlendirme, düzenleme ve egzersiz verileri silmek.
  • Offline işlevselliği - ağ mevcut olduğunda yerel ve senkronize verileri depolamak.

Future Future

eklemeyi düşünün:

  • Apple Watch ile entegrasyon[Dönetici:0)[[Dönetici:0) kalp oranı ve egzersiz izleme için.
  • Makine öğrenme modelleri (Core ML) ileri etkinlik tanıma için.
  • BulutKit kullanarak sosyal özellikler (derboards, zorluklar).
  • AR, [[B][/0}ARKit).

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

iOS'ta sensör veri entegrasyonu ile bir fitness izleme uygulaması, ödüllendirici bir meydan okumadır. Core Motion, Core Location ve HealthKit, doğru, aksiyon edilebilir bir fikir oluşturabilirsiniz, kullanıcı gizliliğine saygı duyarken. Focus on Clean code, batarya verimliliği ve sorunsuz bir kullanıcı deneyimi.(Dönlendirme)SağlıkKit ve gelişmiş analizlere kadar küçük başlayın.For official documents, danışmanlık.(FLT:0)