Ini adalah aplikasi Swift iOS (dibangun pada XCode 6.1.1) yang disediakan sebagai contoh bagi pengembang yang tertarik pada ekosistem Kardia.io. Saat ini hard-coded untuk menyambung dan membaca data dari unit RedBearLabs Blend Micro yang dimuat dengan firmware yang direkomendasikan oleh situs web RedBearLabs. Kami memprogram unit-unit ini untuk memancarkan data tiruan yang menyimulasikan jejak EKG nyata. Aplikasi ini menghubungkan ponsel ke perangkat dan menyampaikan data yang dikirimkan ke server (node.js dan python) di Kardia.io. Aplikasi ini juga mendengarkan dan menampilkan analisis yang datang dari server.
Kloning repo dan buka di XCode. Muat aplikasi ke ponsel Anda. Aplikasi akan secara otomatis terhubung ke unit BLE terdekat dengan layanan dan UUID karakteristik yang sesuai (lihat di bawah) dan mulai mengalirkan data ke kardia.io. Data yang dianalisis kembali ke aplikasi secara real time. Segala kejadian abnormal (aritmia) akan terekam dalam tampilan tabel yang dapat diakses dengan menggeser ke kiri atau ke kanan. Peristiwa ini dapat dihapus dengan menariknya ke kiri.
Aplikasi mencari layanan UUID 713D0000-503E-4C75-BA94-3148F18D941E yang berisi karakteristik UUID 713D0002-503E-4C75-BA94-3148F18D941E yang sesuai dengan data yang dipancarkan oleh Arduino. Nilai-nilai ini ditentukan dalam firmware untuk Blend Micro yang ditautkan di situs web RedBearLabs.
Setelah aplikasi terhubung ke perangkat BLE (lihat penjelasan singkat di bawah), aplikasi akan mendaftarkan pendengar untuk perubahan status karakteristik data perangkat keras. Data ini ditafsirkan sebagai float dan diteruskan ke dua fungsi panggilan balik. Seseorang menambahkannya ke buffer titik data terbaru untuk dirender dalam grafik. Yang lain memancarkannya sebagai acara soket. Ini dipancarkan sebagai objek JSON dengan kunci "amplitudo" dan "waktu" yang sesuai dengan nilai yang diterima dari perangkat keras dan waktu ISO8601 saat peristiwa soket dipancarkan.
Aplikasi ini juga mendengarkan respons dari server, yang merupakan objek JSON yang memiliki kunci "heartRate" (cukup jelas) dan "statusCode". Kode status dicari dalam kamus yang ditentukan di ViewController.swift dan diterjemahkan ke tampilan utama sebagai statusView.
Kami menggunakan perpustakaan SocketIOClient, yang membungkus perpustakaan Objective-C Socket Rocket. Peristiwa berikut digunakan:
Kami menggunakan perpustakaan Swift-Linechart untuk merender jejak EKG langsung. Itu tidak sepenuhnya memenuhi kebutuhan kami jadi kami memodifikasinya sebagai berikut:
Saat aplikasi mencatat kelainan baru, aplikasi mencatatnya di arrhythmiaTimes global, yang berfungsi sebagai sumber data untuk tampilan tabel. "Fresh" dalam hal ini berarti suatu kejadian hanya dicatat jika status yang dilaporkan oleh server berubah menjadi kejadian tidak normal (dalam hal ini aritmia) sehingga kejadian aritmia yang berulang tidak semuanya dicatat.
Silakan lihat bagian masalah di repo ini.
Berikut adalah tutorial bagus tentang menghubungkan perangkat BLE ke perangkat iOS menggunakan Swift. Singkatnya, aplikasi mulai mencari periferal Bluetooth yang mengiklankan UUID layanan tertentu. Ketika ditemukan, ia menghubungkan dan mencari UUID karakteristik tertentu. Jika ditemukan, ia mulai mendengarkan data tersebut.
Kapan pun tampilan perlu diperbarui, Anda harus menjalankan kode tersebut di thread utama (UI). Itu sebabnya Anda akan melihat blok kode seperti ini:
dispatch_async(dispatch_get_main_queue()) {
// UI-updating code goes here
}
Acara ditangani oleh NSNotificationCenter - mendaftarkan pendengar dan mengaktifkan acara cukup jelas. Berikut ini Swift cepat: terjemahan istilah Javascript:
Contoh:
foo.on('bar', doAThing)
menjadi
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("doAThing"), name: "bar", object: nil)
Fungsi dapat memiliki nama yang sama asalkan memiliki parameter yang berbeda - hal ini sering terjadi pada protokol.
Tampilan dapat dibuat dan dibatasi di Main.storyboard atau secara terprogram dalam kode. Aplikasi ini menggunakan campuran keduanya - tampilan utama semuanya dilakukan dengan gaya terakhir sedangkan tampilan tabel menggunakan gaya sebelumnya.