Food & BeverageCooking

thermal beacon bluetooth alibaba beacon eddystone OEM

Hai nama saya Will dan hari ini saya akan

menunjukkan cara menulis aplikasi Swift kecil

yang menggunakan iBeacon. Aplikasi kami akan

menemukan suar terdekat ke perangkat dan mengubah

warna layar agar sesuai dengan warna

suar itu. Kami tidak akan menggunakan SDK apa pun, kami

hanya akan berinteraksi langsung dengan CoreLocation

API untuk mendeteksi beacon, dan saya pikir Anda

akan terkejut melihat betapa sedikit kode, betapa sedikit

boilerplate yang diperlukan untuk memulai dan

menjalankannya iBeacon. Jadi mari kita mulai.

Silakan jalankan Xcode dan kita akan membuat

proyek baru, Aplikasi Tampilan Tunggal.

Saya akan menyebutnya ‘demo suar terdekat’.

Pastikan bahasa Anda Swift, itulah

yang akan kami kerjakan hari ini. Dan perangkat,

pilih saja yang mana yang benar-benar Anda miliki.

Untuk demo ini, untuk mengikuti, Anda

memerlukan beberapa hal. Pertama, Anda memerlukan beacon

untuk benar-benar berinteraksi dengan aplikasi. Kedua,

Anda memerlukan perangkat dan akun pengembang berbayar

untuk benar-benar memuat aplikasi ke

perangkat Anda. Alasannya, kami mendeteksi

sinyal bluetooth, dan Mac Anda tidak mem

-proxy perangkat keras bluetoothnya ke simulator, jadi

Anda tidak akan benar-benar mendeteksi suar apa pun

dengan simulator. Baiklah, lanjutkan dan tekan Berikutnya

dan Simpan itu. Kami akan

secara eksklusif bekerja di View Controller kami,

jadi lanjutkan dan buka itu. Sekarang, untuk berinteraksi

dengan iBeacon kita akan menggunakan CoreLocation,

jadi hal pertama yang akan kita lakukan adalah mengimpor

perpustakaan itu di atas, tepat di bawah UIKit.

Hal berikutnya yang perlu kita lakukan adalah memberi tahu kelas kita

metode delegasi apa yang akan

tersedia untuknya, jadi kita akan membuat LocationManagerDelegate

dan semua metode tersebut dikirimkan langsung

ke sini. Jadi tepat setelah UIViewController di sini

tambahkan koma, dan kita akan menambahkan ‘CLLocationManagerDelegate’,

dan itu akan memberi tahu kelas ini

metode delegasi apa yang tersedia untuknya. Hal berikutnya yang

sebenarnya kita perlukan untuk membuat Pengelola Lokasi,

inilah yang mengoordinasikan semua layanan lokasi

untuk kita. Jadi lanjutkan dan tentukan

locationManager, dan ini akan menjadi

instance dari ‘CLLocationManager()’, begitu

saja. Selanjutnya kita perlu memberi tahu locationManager

apa delegasinya dan di mana ia harus mengirimkan

metode delegasi, jadi tepat di dalam viewDidLoad(),

beri tahu locationManager bahwa delegasinya

adalah ‘diri’, Pengontrol Tampilan ini. Ok, sekarang setelah

kita melakukannya, untuk benar-benar mulai

menggunakan locationManager, ada beberapa

hal yang perlu kita lakukan. Anda mungkin telah memperhatikan

sejak Anda menggunakan aplikasi bahwa mereka harus meminta

izin Anda untuk mengakses GPS. Hal

yang sama berlaku dengan teknologi iBeacon. Anda tidak dapat

mulai mencari dan mengendus sinyal bluetooth

tanpa izin mereka. Jadi ada beberapa

hal yang perlu kita lakukan untuk melakukan itu. Pertama, kita

akan memanggil metode di locationManger

untuk ‘requestWhenInUseAuthorization()’. Jadi

ada beberapa opsi berbeda yang dapat Anda

gunakan, jadi ada dua opsi: ada requestAlwaysAuthorization(),

yang akan memberi Anda akses ke layanan lokasi

bahkan saat Anda berada di latar belakang, dan Anda

dapat membangunkan aplikasi dan merespons

notifikasi tersebut. Atau requestWhenInUseAuthorization(),

dan ini membatasi akses Anda hanya saat

Anda berada di latar depan dan pengguna menggunakan

aplikasi Anda secara aktif. Karena kami mengubah

warna layar sebagai reaksi terhadap

suar terdekat, masuk akal bagi kami untuk meminta whenInUseAuthorization().

Jadi bagian lain dari requestWhenInUseAuthorization()

dan requestAlwaysAuthorization() adalah setelah mereka

menyetujuinya, Anda tidak perlu terus bertanya,

dan sebenarnya sistem tidak akan terus bertanya

dengan dialog. Tetapi untuk bertanggung jawab,

saya pikir kami akan menambahkan sedikit cek di sini.

Jadi untuk memeriksa status otorisasi

kami, ada metode kelas di CLLocationManager

(Anda akan melihat ini adalah kelas CLLocationManager yang sebenarnya

, bukan instance locationManager kami di sini).

Jika Anda memanggil otorisasiStatus() pada ini,

itu akan mengembalikan enum. Jadi katakanlah

jika ini adalah sesuatu selain CLAuthorizationStatus.AuthorizedWhenInUse,

yang akan kita tuju, jika bukan

ini, jika ditolak, atau belum ditanyakan

, maka mari kita meminta requestWhenInUseAuthorization() ini.

Jadi sekarang jika kami benar-benar menjalankan simulator kami di

sini, Anda akan melihat tidak ada yang terjadi. Layar pemuatan

memang hilang, jadi ini adalah layar kosong kami,

viewDidLoad() menyala, tetapi kami tidak

dimintai otorisasi. Itu karena

ada satu hal yang tersisa yang harus kita lakukan. Jadi di

file pendukung kami, Anda akan menemukan info.plist Anda.

Kami perlu menambahkan baris di sini yang

mendefinisikan pesan/alasan atau permohonan Anda

kepada pengguna tentang mengapa mereka harus mengizinkan. Jadi mari kita

tambahkan baris lain tepat di bawah, dan

ini juga semacam kesalahan, karena ini

tidak akan melengkapi secara otomatis, dan tidak

didokumentasikan dengan baik, tetapi Anda perlu menambahkan

kunci ini: ‘NSLocationWhenInUseUsageDescription’.

Itu seteguk. Jadi itulah kuncinya,

whenInUseUsageDescription, dan nilainya

akan menjadi apa yang ditampilkan di prompt. Jadi

saya akan mengatakan ‘Deteksi beacon dan

tampilkan warna yang paling dekat.’ Jadi sekarang

kita memilikinya di daftar kita, mari kita jalankan lagi.

Sekarang Anda akan melihat segera setelah layar pemuatan

itu hilang, kami benar-benar mendapatkan prompt kami,

dan dikatakan, ‘Deteksi beacon dan tampilkan

warna yang paling dekat.’ Itulah tepatnya yang

baru saja kami masukkan dalam daftar kami. Jadi sekarang ketika Anda

menekan ‘Izinkan’ Anda benar-benar dapat mengakses

metode delegasi, Anda sebenarnya memiliki

kontrol dengan locationManager Anda untuk mulai

melakukan sesuatu. Jadi sekarang setelah

status otorisasi kami diotorisasi, kami dapat mulai benar-benar

mendengarkan beacon. Jadi hal pertama yang perlu kita

lakukan adalah menyiapkan wilayah. Region adalah cara untuk

memberi tahu pengelola lokasi beacon mana yang Anda

minati. Anda mungkin membayangkan bahwa di

area yang ramai atau di kereta bawah tanah atau di suatu tempat mungkin

ada banyak beacon di sekitar pengguna, dan Anda

tidak ingin memicu hal-hal di aplikasi Anda

dari beacon orang lain. Jadi, Anda

perlu cara untuk memberi tahu locationManager suar mana

yang menjadi milik Anda. Sekarang setiap beacon memiliki string UUID

yang seharusnya unik untuk beacon Anda.

Itulah tepatnya yang Anda gunakan untuk mendefinisikan suatu wilayah.

Jadi mari kita mulai dengan membuat region,

ini akan menjadi instance dari CLBeaconRegion

dan ada dua hal yang akan kita sampaikan

ke ini: UUID kedekatan dan pengenal.

Sekarang UUID, saya menggunakan beacon Estimote dan

semuanya dikirimkan dengan yang sama, jadi saya pergi

dan mencarinya, dan saya hanya memiliki sedikit

teks expander di sini yang akan

mengisinya. Anda akan melihat ini akan menjadi dalam

format NSUUID dan dibuat dengan UUIDString

di sini, tetapi tergantung pada beacon apa yang Anda

gunakan, atau jika Anda membuatnya sendiri, Anda

mungkin harus mengetahui UUID yang sedang disiarkan,

dan itulah yang harus Anda isi di sini, itu

khusus untuk Anda. Pengidentifikasi hanyalah

string yang akan memberi tahu Anda wilayah apa

ini, jika Anda memantau beberapa wilayah,

Anda dapat mengakses pengidentifikasi ini saat Anda mendapatkan

kembali acara. Jadi saya hanya akan menyebutnya

‘Perkiraan’, dan hanya itu untuk wilayah.

Hal berikutnya yang perlu kita lakukan dengan region

ini sebenarnya adalah memberi tahu instance locationManager kita

untuk menggunakan region ini dan mulai mencari. Jadi

ada metode instance di locationManager

untuk startRangingBeaconsInRegion(), dan kita

akan meneruskan wilayah yang baru saja kita definisikan.

Jadi sekarang kita akan benar-benar dapat

mulai mendengarkan beacon dan itu berarti

metode delegasi kita akan mulai

dipanggil. Jadi, jika Anda mulai mengetik di locationManager,

Anda akan melihat pelengkapan otomatis di sini untuk semua

metode delegasi yang tersedia bagi

kami. Inilah yang kami pedulikan di sini: didRangeBeacons:inRegion.

Jadi untuk memulai, mari kita logout saja

outputnya. Anda akan melihat bahwa beacon yang

kembali hanyalah sebuah array dari [AnyObject], jadi mari kita

cetak saja di sini. Dan ini sejauh

yang Anda bisa lakukan dengan

simulator, saatnya untuk beralih ke perangkat nyata.

Jadi saya akan memuat ini di ponsel saya,

dan mari kita lihat output lognya di sini.

Jadi sedang memuat, kami akan mengizinkan akses, dan sekarang kami

mulai mendapatkan sejumlah besar suar kembali.

Jadi mari kita hentikan ini sebentar, dan kita akan

melihat lebih dekat. Saya memiliki 3 beacon di sekitar

saya, jadi setiap kali ini dikembalikan, itu

harus mencetak 3 beacon dalam sebuah array. Kami

melihat UUID kami di sini, kami melihat nilai utama dan

nilai kecil untuk masing-masing, kedekatan, dan

rssi. Dan kita melihat ini, itu satu,

ini dua, dan itu tiga dalam susunan.

Jadi beberapa hal di sini: setiap beacon minimal

akan memiliki tiga pengidentifikasi yang disiarkan:

nilai UUID, mayor, dan minor, ini adalah

bagaimana Anda mengidentifikasi beacon Anda. Dan kemudian kedekatan

itu menarik, kedekatan adalah enum

yang kembali sebagai 0, 1, 2, atau 3. Ini hanya

dalam arti umum cara untuk memberi tahu Anda seberapa dekat

suar Anda. Jadi 0 artinya tidak tahu,

1 artinya sangat dekat, 2

artinya agak jauh, dan 3 artinya

jauh. RSSI adalah ukuran kekuatan sinyal yang sebenarnya

. Semakin dekat ke 0 ini, semakin

kuat, sehingga rssi dari -49 lebih dekat ke

0 daripada -51, dan ini cocok di -51. Sekarang saya

ingin menyebutkan bahwa dalam pengujian saya, moko beacons saya telah

melakukan banyak pertukaran dan melihat log,

dan array ini selalu kembali kepada saya

diurutkan paling dekat ke terjauh oleh rssi. Jadi Anda akan

melihat kedekatannya adalah 2 pada semua ini

, agak sulit untuk melihat dengan semua log ini bersama-sama di

sini, tetapi kedekatannya kembali sebagai

2, jadi secara umum Anda tidak dapat membedakan mana

yang paling dekat , tetapi menggunakan RSSI atau

kekuatan sinyal adalah cara lain untuk membedakan

tingkat yang lebih halus dengan memeriksa

RSSI mana yang paling dekat dengan 0.

Intinya adalah bahwa rssi yang tidak diketahui dilaporkan sebagai 0, dan akan

kembali di depan ini array, jadi Anda

tidak bisa hanya mengandalkan meraih yang pertama

dalam array karena yang tidak dikenal sangat

tidak mungkin lebih dekat daripada yang dikenal, terutama

jika ada banyak yang kembali. Jadi

ada beberapa hal yang ingin kita lakukan pada array ini

sekarang. Hal pertama yang ingin kita lakukan adalah

membersihkannya, artinya untuk penggunaan saya di sini, saya akan

mengambil yang pertama dalam array dan menganggap

itu yang paling dekat, tetapi sebelum saya melakukannya, saya

ingin menghapus semua yang tidak diketahui. Dan saya

ingin menunjukkan bahwa jika Anda mengirimkan aplikasi produksi

, Anda tidak harus bergantung pada yang

pertama kembali untuk menjadi yang terdekat. Hanya dalam

pengujian saya, saya telah menemukan itu, jadi untuk tutorial ini

kita akan melakukannya, tetapi tidak ada

dalam dokumentasi Apple yang menjanjikan

akan seperti itu selamanya, atau

akan seperti itu. Jadi mari kita bersihkan array beacon ini

yang kembali dengan membuat array baru

bernama knownBeacons dan kita akan memanggil

metode filter pada array beacon kita

yang kembali dari metode delegasi ini di sini.

Jadi di dalam sini kami ingin mengatakan, mari kita periksa

setiap item dalam array ini, dan jika kedekatannya tidak sama dengan CLProximity.Unknown,

(ingat proximity adalah enum, jadi saya memeriksa

nilai enum untuk Unknown), dan berkata ,

Anda dapat tetap berada di larik ini, atau beacon

akan mendorong item ini ke larik

knownBeacons selama kedekatannya tidak diketahui. Jadi

sekarang kita memiliki array knownBeacons yang akan

berisi pengurutan yang sama dengan array lainnya,

dikurangi semua beacon yang tidak diketahui. Jadi sekarang

aman, untuk tujuan kita, untuk mengambil yang

pertama dalam array. Jadi satu-satunya hal yang

ingin saya lakukan sebelum kita melakukannya adalah memastikan

bahwa sebenarnya ada setidaknya satu yang tersisa di

sini, jadi selama hitungannya lebih besar dari

0, kita akan membiarkan Suar terdekat

menjadi Suar pertama yang diketahui, dan kita perlu melemparkan

ini ke CLBeacon, sehingga ia tahu apa

itu. Satu-satunya yang tersisa untuk dilakukan sebenarnya adalah

mengatur warna latar belakang kita ke warna

suar ini. Saya akan kembali ke sini dan saya

memiliki ekspander teks lain untuk membuat larik ini di

mana kuncinya sesuai dengan nilai minor

beacon saya, ini adalah bagaimana saya

akan mengidentifikasinya, saya menemukan nilai minor

dari semua suar saya sebelumnya, dan

mengaitkannya dengan UIColor yang menurut saya cukup

dekat. Jadi apa yang akan kita lakukan di sini adalah kita

akan mengatakan self.view.backgroundColor

akan sama dengan array warna kita,

dan kuncinya akan menjadi nilai terdekatBeacon.minor kita

, dilemparkan ke integerValue-nya. Jadi kita akan

menyimpan dan menjalankannya

dan saat ini muncul, saya akan meletakkan suar hijau di dekatnya dan

kita akan melihat warna layarnya menjadi hijau.

Tukar dengan biru dan layar berubah biru,

tukar dengan ungu, dan layar berubah

ungu. Jadi kita bisa terus melakukan ini sepanjang hari

dan melihat perubahan warna cukup cepat

saat kita memindahkan beacon lebih dekat dan lebih jauh

dari perangkat kita, melihat bahwa itu berfungsi.

Baiklah jadi itulah contoh dasar di sini

tentang cara memulai dan menjalankan iBeacon

menggunakan Swift dan iOS8. Jika Anda memiliki pertanyaan,

silakan tinggalkan di komentar YouTube

atau temukan saya di Twitter, saya @willdages. Saya akan

senang mendengar dari Anda, terutama jika ini

membantu Anda. Terima kasih!


We are currently airing our editorial message every day / month and gaining the attention of 241 + million affluent viewers and subscribers on the Fox Business Network, Oxygen, and the Travel Channel. See demographics by clicking here.

As Seen On American Airlines American Airlines
As Seen on Oprah Winfrey, the Own Channel
As Seen on Lifetime, Real Women
As Seen on Fox Business News
As Heard on CBS Nationally Syndicated Radio
As Seen on CNN